7.6 数据结构之字典
- 用于存放具有映射关系的数据。
- 字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合,程序需要通过Key来访问Value,因此在同一个字典中,键(key)必须是唯一的。

1 创建格式:
dict1 = {key01 : value01, key02 : value02, …}
2 常用功能
# 空dict
empty_dict1 = {
}
empty_dict2 = dict()
print(empty_dict1)
# 输出:{}
print(empty_dict2)
# 输出:{}
dict1 = {
'语文': 80, '数学': 70, '英语': 60}
#访问
# 通过 key 访问 value 使用的也是方括号语法,就像前面介绍的列表和元组一样,只是此时在方括号中放的是 key,而不是列表或元组中的索引。
print(dict1)
# 输出:{'语文': 80, '数学': 70, '英语': 60}
print(dict1.keys())
# 输出:dict_keys(['语文', '数学', '英语'])
print(dict1.values())
# 输出:dict_values([80, 70, 60])
print(dict1['数学'])
# 输出:70
# 通过 key 添加 key-value 对。
dict1['日语'] = 89
print(dict1)
# 输出:{'语文': 80, '数学': 70, '英语': 60, '日语': 89}
# 通过 key 删除 key-value 对。
del dict1['数学']
print(dict1)
# 输出:{'语文': 80, '英语': 60, '日语': 89}
# 通过 key 修改 key-value 对。
dict1['语文'] = 99
print(dict1)
# 输出:{'语文': 99, '英语': 60, '日语': 89}
# 通过 key 判断指定 key-value 对是否存在。
print('日语' in dict1)
print('日语' not in dict1)
# 输出:True
# 输出:False
# 使用dict()函数创建字典
dict2 = [('语文', 100), ('数学', 90), ('英语', 80)]
dict3 = dict(dict2)
print(dict3)
# 输出:{'语文': 100, '数学': 90, '英语': 80}
dict4 = dict(语文=80, 数学=70, 英语=60)
print(dict4)
# 输出:{'语文': 80, '数学': 70, '英语': 60}
3 字典的常用方法
字典由 dict 类代表,可以使用dir()查看该类包含哪些方法
[‘clear’, ‘copy’, ‘fromkeys’, ‘get’, ‘items’, ‘keys’, ‘pop’, ‘popitem’, ‘setdefault’, ‘update’, ‘values’]
# clear:删除字典内所有元素
dict1.clear()
print(dict1)
# 输出:{}
# 浅copy
dict1 = dict3.copy()
print(dict1)
# 输出:{'语文': 100, '数学': 90, '英语': 80}
# fromkeys:创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。
dict5 = dict.fromkeys(dict1)
print(dict5)
# 输出:{'语文': None, '数学': None, '英语': None}
dict5 = dict.fromkeys(dict1, 10)
print(dict5)
# 输出:{'语文': 10, '数学': 10, '英语': 10}
# get:返回指定键的值,如果值不在字典中返回default值
print(dict1.get