Python机器学习
上QQ阅读APP看书,第一时间看更新

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.在字典中嵌套字典

也可以根据需要在字典中嵌套字典,但程序相对复杂。

例如:

运行结果如下: