v>
软件测试
广州博才科技开发有限公司
迅捷PDF编辑器
3.4 字典
学习目标:
1. 能够说出如何定义一个字典
2. 能够说出字典和列表的区别
3. 能够说出如何使用 for 循环来遍历列表中的键、值和键值对
4. 能够说出字典键和值的特点
列表中存储的元素都值, 在列表中根据某个关键字去查找数据效率较低. 为了解决该方面的问题, Python 提供了字典
这种容器类型, 字典中存储的每一个元素都是键值对, 并且在字典中根据键(关键字)去查找某个元素的效率非常高.
为了实现高的查询效率, 字典被实现成了一种非序列式容器, 也就导致字典无法根据索引获得元素, 同样也不支持切
片操作.
3.4.1 字典语法格式
字典是另一种可存储任意类型对象. 字典中的每一个元素都是一个 "键值对", 键值之间用冒号(:)分割, 每个字典元素
(键值对)之间用逗号(,)分割, 整个字典包括在花括号 {} 中, 格式如下所示:
my_dict = {key1: value1, key2: value2, key3: value3}
字典键和值的特点:
1. 键一般是唯一的, 如果重复最后的一个键值对会替换前面的, 键的类型一般情况下使用字符串、数字类型. 2. 值
不需要唯一, 可以为任何的数据类型.
3.4.2 字典操作
3.4.2.1 访问元素
字典中根据键获得值的操作, Python 提供了两种方式:
1. 直接通过键来获得, 但当键不存在时, 会抛出错误.
2. 通过 get 方法来根据键获得值, 如果键不存在则会返回 None, 该返回默认值也可自定义.
person = {'name': 'Obama', 'age': 18, 'sex': '男'}
# 如果 key 不存在会报错
print(person['name'])
# 如果 key 不存在可设置默认值
print(person.get('gender', 'default'))
3.4.2.2 添加和修改元素
在字典中修改元素, 直接通过键来修改即可. 这时需要注意, 如果键不存在, 默认为新增元素操作, 只有键存在时, 才
为修改操作.
person = {'name': 'Obama', 'age': 18, 'sex': '男'}
# 如果 key 不存在则为添加新元素
55软件测试
广州博才科技开发有限公司
迅捷PDF编辑器
person['salay'] = 12000
# 如果 key 存在则为修改元素
person['age'] = 20
3.4.2.3 删除元素
Python 中字典中元素的删除, 需要根据键来进行, 我们可以使用 pop 方法根据 key 来删除字典中的元素.
person = {'name': 'Obama', 'age': 18, 'sex': '男'}
# 删除某个元素
person.pop('name')
# 清空字典
person.clear()
3.4.2.4 遍历元素
由于字典是非序列式容器, 无法通过逐个获取元素, 所以遍历字典的方式就是先将字典转换成类似列表的形式, 再对
其进行遍历. 在获得字典的列表时, 我们有以下三个方案:
1. 获得字典键的列表, 通过字典的 keys 方法.
2. 获得字典值的列表, 通过字典的 values 方法.
3. 获得字典的键值对列表, 通过字典的 items 方法.
person = {'name': 'Obama', 'age': 18, 'sex': '男'}
# 获得字典的值列表
print(person.values())
# 获得字典的键列表
print(person.keys())
# 获得字典的键值对列表
print(list(person.items()))
for key, value in person.items():
print(key, value)
3.4.3 小结
1. 字典通过一对花括号 "{}" 来定义, 每一个元素都是一个键值对.
2. 字典不支持索引、切片操作.
3. 字典根据键查询元素的效率非常高.
4. 字典的键一般情况下是数字、字符串等, 键必须唯一不重复.
5. 字典的值可以重复, 任意类型.
6. for 循环无法直接遍历字典, 需要先将字典转换为类似列表那样能够被迭代的类型.
7. 字典的 get 方法可以根据键获得值, 如果键不存在返回默认值.
8. 字典的 pop 方法可以根据键来删除字典中某个元素.
9. 字典的 clear 方法可用来清空字典.
10. 字典的 keys 方法可以返回一个由字典的键组成的列表.
11. 字典的 values 方法可以返回一个由字典的值组成的列表.
12. 字典的 items 方法将每一个键值对存放到元组中, 然后将元组列表返回.
56