3.3 字典
字典(dictionary)是Python中唯一的映射类型,也是一种可变容器模型,可以存储任意类型的对象,如字符串、数字和元组等其他容器模型。字典是可变的、无序的键-值映射,又称为关联数组或散列表。
3.3.1 字典的基本操作
1.创建字典
字典由键及其对应值(key-value)成对组成,称为键-值对。字典的每个键-值对里的键与值用冒号(:)分隔,键-值对之间用逗号(,)隔开,整个字典括在一对花括号({})中。len( )函数可以返回字典中所包含的键-值对个数。
字典基本语法格式如下:
字典中,键是不可变且唯一的,如字符串、数字和元组。值可为任何数据类型且不必唯一。
字典创建方法实例如下:
字典主要特性如下。
1)字典值可以是任何Python对象,如字符串、数字和元组等。
2)一般不允许同一个键出现两次。如果同一个键被赋值两次,创建字典时后一个值会覆盖前面的值。
例如:
运行结果如下:
3)键必须是不可变的,因此可以采用数字、字符串或元组,但不能使用列表。
例如:
运行出现的错误提示如下:
2.访问字典里的值
访问字典中的值时将相应的键放入字典对象下标引用的方括号中。
例如:
运行结果如下:
如果访问字典中不存在的键,Python将会提示错误信息。
例如:
由于字典中不存在'sex'键,则输出错误提示信息如下:
3.修改字典
可以修改字典,包括向字典中增加新的键-值对、修改或删除已有的键-值对等。
例如:
运行结果如下:
4.删除字典元素
使用del()方法可以从字典中删除某一指定键的一个字典元素(一对键-值对)。使用clear()方法可以清空字典中的所有元素。使用del命令可以删除一个字典。
例如:
5.in运算
in运算用于判断某个键是否存在于字典中,运算结果为True或False。in运算只适用于键(key)而不适用于值(value)。
例如:
运行结果如下:
6.获取字典中所有的值
values()方法以列表形式返回字典中所有的值。
例如:
运行结果如下:
7.items()方法
items()方法将字典中每对键(key)和值(value)组成一个元组,并把这些元组放在列表中返回。
例如:
运行结果如下:
Python提供的字典的常用方法如表3-2所示。
表3-2 Python 3常用的字典方法
3.3.2 遍历字典
一个Python字典可能只包含几个键-值对,也可能包含数百万个键-值对。字典可以使用各种方式存储信息,因此Python支持多种对字典遍历的方式:可遍历字典中的所有键-值对、键或值。利用for… in…可实现对字典的遍历。
1.遍历字典中所有的键
例如:
运行结果如下:
也可以使用字典的keys()方法遍历字典。
例如:
运行结果如下:
可以看出,for key in dict和for key in dict.keys()在使用上完全等价。
2.遍历字典中所有的值
例如:
运行结果如下:
3.遍历字典中所有的项
例如:
运行结果如下:
4.遍历字典中所有的键/值对
例如:
运行结果如下:
也可以写成如下形式:
运行结果如下:
可以看出,for key,value in dict.items()与for(key,value)in dict.items()在使用上完全等价。
3.3.3 字典与列表的嵌套
Python提供字典与列表的嵌套存储。可以将一系列字典存储在列表中,也可以将列表作为值存储在字典中,称为嵌套。既可以在列表中嵌套字典,也可以在字典中嵌套列表,甚至可以在字典中嵌套字典。
1.字典列表
字典列表就是在列表中包含多个字典,每个字典又都包含特定对象的多种信息。在字典列表中,所有字典的结构都相同,因此可以遍历这个列表,并以相同的方式处理其中的每一个字典。
例如:
运行结果如下:
2.在字典中嵌套列表
根据需要可以将列表存储在字典中。
例如:
运行结果如下:
列表和字典的嵌套层级不应太多。
3.在字典中嵌套字典
也可以根据需要在字典中嵌套字典,但程序相对复杂。
例如:
运行结果如下: