一. 初识字典
字典一种可变的容器,可以存储任意类型的数据,数据以键(key)-值(value)对的形式进行映射存储。字典中的每个数据都是用“键”(key)进行索引的,而不像序列可以用下标进行索引,因此键不能重复,且只能用不可变类型作为字典的键。数据没有先后顺序关系,字典的存储是无序的。
1.1 表示方式
{} 括起来,以冒号(:)分隔键-值对,各个键-值用逗号分隔开
1.2 创建字典
- 创建空字典:d = {}
- 创建非空字典:d = {"name":"Alex","age":12}、d = {1:"星期一",2:"星期二"}
- 字典的构造函数:
dict() | 创建空字典,等同于{} |
dict(iterable) | 用可迭代对象初始化一个字典。如:d = dict([('name', 'Alex'), ('age', 13)]),每个元组里面提供2个值,一个为键,一个为值。 |
dict(**kwargs) | 关键字传参形式生成一个字典。如:d = dict(name='Alex',age=15),此方法中,键必须只能是字符串 |
1.3 添加/修改字典的元素
使用“字典[键] = 值”的形式向字典中添加/修改元素;当键不存在时,创建键并绑定键对应的值,当键存在时,修改键绑定的对象。
1.4 删除字典的元素
del语句用来删除字典的元素:del dict[key]
1.5 in/not in运算符
判断一个“键”是否存在与字典中,如果存在则返回True,否则返回False
1.6 字典的迭代访问
字典是可迭代对象,直接遍历字典时得到的是字典的键。可以使用索引间接访问值(遍历时切勿去同时修改字典的值,后续篇幅会详细说明)。
二. 字典常用函数及方法
关于字典相关函数的使用总结如下
函数 | 说明 |
len(x) | 返回键值对的个数 |
max(x) | 返回‘’键‘’的最大值 |
min(x) | 返回‘’键‘’的最小值 |
sum(x) | 返回‘’键‘’的和 |
any(x) | 真值测试,如果字典中一个‘’键‘’为真,则结果为真 |
all(x) | 真值测试,字典中所有‘’键‘’为真,则结果才为真 |
关于字典相关方法的使用总结如下
方法 | 说明 |
D.clear() | 清空字典 |
D.copy() | 返回字典D的副本,只复制一层(浅拷贝) |
D.get(k[,d]) | 返回键key对应的值,如果没有此键,则返回default |
D.items() | 返回键值对组成的可迭代对象; 如:d = {1:"one", 2:"two","three":3},d.items()返回值为dict_items([(1, 'one'), (2, 'two'), ('three', 3)]) |
D.keys() | 返回字典的键; d = {1:"one", 2:"two","three":3},d.keys()返回值为dict_keys([1, 2, 'three']) |
D.values() | 返回字典的值; d = {1:"one", 2:"two","three":3},d.values()返回值为dict_values(['one', 'two', 3]) |
D.pop(k[d]) | 移除键,同时返回此键对应的值; |
D.update(D2) | 更新字典;如果key值重复,则更新为D2中的值 |
三. 字典和列表的比较
- 都是可变对象;
- 索引方式不同,列表用整数索引,字典用键索引;
- 列表的存储是有序的,字典的存储是无序的:
- 列表:顺序存储,append()很快,但insert()很慢;
- 字典:映射存储,插入的速度很快。