字典(dict)是可迭代的、可变的数据结构,通过键来访问元素,字典结构比较复杂,由两部分视图构成的,一是键(key)视图,另一是值(value)视图。键视图不能包含重复元素,而值视图可以,键和值是成对出现的。
下图是字典结构的“国家代号”,键是国家代号,值是国家。
11.1 创建字典
字典可以使用以下两种方式创建。
(1)使用大括号{}包裹键值创建字典。
(2)dict()函数创建字典。
11.1.1 使用大括号创建字典
使用大括号{}将键值对包裹起来,“键”和“值”之间用冒号分隔,两个键值对之间用的逗号分隔。
获得键值对个数或字典长度也是用len()函数。
字典中的“键”不能重复。
11.1.2 使用dict()函数创建字典
dict()函数可以有很多参数形式,常用的有:
1)dict(d):参数d是其他字典对象。
2)dict(iterable):参数iterable是可迭代对象,可以是元组或列表等。
使用dict()函数。
使用dict(iterable)函数。
zip()函数 ,可将两个迭代对象打包成元组,在创建字典时,可迭代对象元组,需要两个可迭代对象,第一个是键([102, 105, 109]),第二个是值(['张三', '李四', '王五'])。它们包含的元素个数相同,并且一一对应。
11.2 修改字典
修改字典操作包括添加、替换和删除键对。
访问字典中的元素可通过下标实现,下标参数是键,返回对应值,dict1[109]是取出字典dict1中键为109的值。
del dict1[109]是删除109键对应的值,注意del是语句不是函数,使用del语句删除键值对时,如果键不存在会抛出错误。
删除元素:字典的pop(key[,default])和popitem()方法。
pop(key[,default])方法删除键值对,如果键不存在则返回默认值(default)。
popitem()方法可以删除任意键值对,返回删除的键值对构成元组。
11.3 访问字典
访问字典的键或值。
๏ get(key[, default])。通过键返回值,如果键不存在返回默认值。
๏ items()。返回字典的所有键值对。
๏ keys()。返回字典键视图。
๏ values()。返回字典值视图。
在访问字典时,也可以使用in和not in运算符,但要注意,in 和not in只能在测试键视图中是否包含特定元素。
11.4 遍历字典
字典有两个视图,可以只遍历值视图,也可只遍历键视图,也可以同时遍历。遍历过程是用for循环实现的。
student_dict = {102: '张三',105: '李四',109: '王五'}
print('---遍历键---')
for student_id in student_dict.keys():
print('学号:' + str(student_id))
print('---遍历值---')
for student_name in student_dict.values():
print('学生:' + student_name)
print('---遍历键:值---')
for student_id,student_name in student_dict.items():
print('学号:{0} - 学生:{1}'.format(student_id,student_name))
11.5 字典推导式
字典包含了键和值两个不同的结构,因此字典的推导式可以非常灵活。语法结构如下:
input_dict = {'one': 1,'two': 2,'three': 3,'four': 4}
output_dict = {k: v for k, v in input_dict.items() if v % 2 == 0}
print(output_dict)
keys = {k for k, v in input_dict.items() if v % 2 == 0}
print(keys)