字典

知识点

无序数据类型,与其他数据类型不同,字典的数据是以键值对的方式进行存储,键值对是可以进行修改的。

字典也用花括号{}表示,与集合的区别就是花括号里面是以键值对的形式存在,其定义如下:

字典名 = {键1:值1,键2:值2,键3:值3..}

特性:

1.键是唯一的,且键和值是一一对应,如果定义相同的键,那么新定义的值会覆盖原值

2.键必须不可变,可以用数字,字符串或元组,但不能用列表,值可以是任何数据类型

字典的创建

# dict.fromkeys(iterable,value)
# 作用:在创建字典的时候,能一次创建多个键值对
# iterable:序列,里面存放键值对的键,注意里面的元素必须是数字,字符串,元组中任意一种
# value:具体的一个数据,默认为None
my_dict=dict.fromkeys([1,'abc',(1,2,3)],1)
print(my_dict)

字典的访问

只能通过唯一的键来访问对应的值,其访问方式为:字典名[键名];访问不存在的键,会报错

# 字典的访问
my_dict=dict.fromkeys(['key1','key2','key3'])
print(my_dict)
print(my_dict['key4'])

键值对的添加:

可以直接添加

# 键值对的添加
my_dict={'key1':'value1','key2':'value2','key3':'value3'}
my_dict['key4']='value4'
print(my_dict)

也可以使用update方法将两个字典合并为一个

# update :合并两个字典
my_dict1 = {1:1,2:2,3:3}
my_dict2 = {4:1,5:2,6:3}
my_dict1.update(my_dict2)
print(my_dict1)

键值对的删除

pop

键值对的修改

对于修改单个键值对,可以通过直接访问键名来修改对应的值

对于修改多个键值对,可以使用update通过覆盖原来的键值对来修改

键值对的查找

直接通过键名来查找,不存在会报错

使用get函数来查,如果键不存在,可以指定返回的提示语

使用in\not in来查找

使用setdefault函数查找,如果存在就返回对应的值,不存在就创建一个新的键值对,通过参数来获取

字典的特殊操作

len():返回键值对的个数

keys:返回字典所有的键

values:返回字典所有的value值

items:返回字典所有的键值对

字典的推导式;

{key_expression:value_expression for item1 in iterable if condition}

课后习题

编程题

1.编写一个 Python 脚本,接收一段英
文文本(字符串)。统计文本中每个
单词出现的频率(次数),忽略大小
写和标点符号。将结果存储在一个字
典中,其中键是小写的单词,值是该
单词出现的次数。最后打印这个字
典。例如,输入 "Hello world!
Hello Python.",输出应类似于
{'hello': 2, 'world': 1, 'python':1} 。
'''

参考答案:

text = input("请输入一段英文文本: ").lower()  # 转换为小写
手动清理文本:非字母数字或下划线的字符替换为空格
cleaned_text = []
for char in text:
    if char.isalnum() or char == '_':  # 保留字母、数字、下划线
        cleaned_text.append(char)
    else:
        cleaned_text.append(' ')
分割单词(多个空格自动处理)
words = ''.join(cleaned_text).split()

统计频率(与原逻辑一致)
word_counts = {}
for word in words:
    word_counts[word] = word_counts.get(word, 0) + 1

print("\n单词频率统计:")
print(word_counts)