在Python中,字典是一系列键—值对。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。

在Python中,字典用放在花括号{}中的一系列键—值对表示:

python字典取values python字典键对应的值_python

键—值对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键—值对之间用逗号分隔。在字典中,你想存储多少个键—值对都可以。

一、使用字典

1、访问字典中的值

要获取与键相关联的值,可依次指定字典名和放在方括号内的键,如下所示:

python字典取values python字典键对应的值_python字典取values_02

这将返回字典alien_0中与键'color'相关联的值:

python字典取values python字典键对应的值_后端_03

2、添加一对键值

字典是一种动态结构,可随时在其中添加键—值对。要添加键—值对,可依次指定字典名、用方括号括起的键和相关联的值。

python字典取values python字典键对应的值_python字典取values_04

了一个键—值对,其中的键为'x_position',而值为0。在❷处,我们重复这样的操作,但使用的键为'y_position'。打印修改后的字典时,将看到这两个新增的键—值对:

python字典取values python字典键对应的值_python_05

3、修改字典中的值

要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。

python字典取values python字典键对应的值_用户名_06

输出表明键值由green变成了yellow。

python字典取values python字典键对应的值_用户名_07

 4、删除键—值对

对于字典中不再需要的信息,可使用del语句将相应的键—值对彻底删除。使用del语句时,必须指定字典名和要删除的键。

python字典取values python字典键对应的值_开发语言_08

输出如下:points键已删除

python字典取values python字典键对应的值_后端_09

二、由类似对象组成的字典

可以使用字典来存储众多对象的同一种信息。例如,假设你要调查很多人,询问他们最喜欢的编程语言,可使用一个字典来存储这种简单调查的结果,如下所示:

python字典取values python字典键对应的值_开发语言_10

三、遍历字典

1、可以使用一个for循环来遍历字典,用于存储键—值对中的键和值。对于这两个变量,可使用任何名称。for语句的第二部分包含字典名和方法items(),它返回一个键—值对列表。

python字典取values python字典键对应的值_python字典取values_11

输出如下:

python字典取values python字典键对应的值_用户名_12

注意,即便遍历字典时,键—值对的返回顺序也与存储顺序不同。Python不关心键—值对的存储顺序,而只跟踪键和值之间的关联关系。

2、在不需要使用字典中的值时,方法keys()很有用。

python字典取values python字典键对应的值_开发语言_13

代码行让Python提取字典favorite_languages中的所有键,并依次将它们存储到变量name中。输出列出了每个被调查者的名字:

python字典取values python字典键对应的值_后端_14

遍历字典时,会默认遍历所有的键,因此,如果将上述代码中的for name infavorite_languages.keys():替换为for name in favorite_languages:,输出将不变。

3、使用keys()确定某个人是否接受了调查。下面的代码确定Erin是否接受了调查:

python字典取values python字典键对应的值_python_15

方法keys()并非只能用于遍历;实际上,它返回一个列表,其中包含字典中的所有键,因此❶处的代码行只是核实'erin'是否包含在这个列表中。由于她并不包含在这个列表中,因此打印一条消息,邀请她参加调查:

python字典取values python字典键对应的值_python_16

3、按顺序遍历字典中的所有键

字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的。要以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序。为此,可使用函数sorted()来获得按特定顺序排列的键列表的副本:

python字典取values python字典键对应的值_开发语言_17

输出表明,按顺序显示了所有被调查者的名字:

python字典取values python字典键对应的值_用户名_18

 4、可使用方法values(),它返回一个值列表,而不包含任何键。

使用方法values(),它返回一个值列表,而不包含任何键。

python字典取values python字典键对应的值_python字典取values_19

 这条for语句提取字典中的每个值,并将它们依次存储到变量language中。通过打印这些值,就获得了一个列表,其中包含被调查者选择的各种语言:

python字典取values python字典键对应的值_python字典取values_20

这种做法提取字典中所有的值,而没有考虑是否重复。涉及的值很少时,这也许不是问题,但如果被调查者很多,最终的列表可能包含大量的重复项。为剔除重复项,可使用集合(set)。集合类似于列表,但每个元素都必须是独一无二的

python字典取values python字典键对应的值_用户名_21

三、嵌套

有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。正如下面的示例将演示的,嵌套是一项强大的功能。

1、字典列表

python字典取values python字典键对应的值_python_22

我们首先创建了三个字典,其中每个字典都表示一个外星人。在❶处,我们将这些字典都放到一个名为aliens的列表中。最后,我们遍历这个列表,并将每个外星人都打印出来:

python字典取values python字典键对应的值_用户名_23

 2、在字典中存储列表

每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。

python字典取values python字典键对应的值_后端_24

如上图所示,每个名字相关联的值都是一个列表(见❶)。有些人喜欢的语言只有一种,而有些人有多种。遍历字典时(见❷),使用了变量languages来依次存储字典中的每个值。在遍历字典的主循环中,我们又使用了一个for循环来遍历每个人喜欢的语言列表(见❸)。现在,每个人想列出多少种喜欢的语言都可以:

python字典取values python字典键对应的值_python字典取values_25

3、在字典中存储字典

可在字典中嵌套字典,如果有多个网站用户,每个都有独特的用户名,可在字典中将用户名作为键,然后将每位用户的信息存储在一个字典中,并将该字典作为与用户名相关联的值。在下面的程序中,对于每位用户,我们都存储了其三项信息:名、姓和居住地;为访问这些信息,我们遍历所有的用户名,并访问与每个用户名相关联的信息字典:

python字典取values python字典键对应的值_用户名_26

 如上图所示,首先定义了一个名为users的字典,其中包含两个键:用户名'aeinstein'和'mcurie';与每个键相关联的值都是一个字典,其中包含用户的名、姓和居住地。

在❶处,我们遍历字典users,让Python依次将每个键存储在变量username中,并依次将与当前键相关联的字典存储在变量user_info中。在主循环内部的❷处,我们将用户名打印出来。

在主循环内部的❷处,我们将用户名打印出来。

在❸处,我们开始访问内部的字典。变量user_info包含用户信息字典,而该字典包含三个键:'first'、'last'和'location';对于每位用户,我们都使用这些键来生成整洁的姓名和居住地,然后打印有关用户的简要信息(见❹):

python字典取values python字典键对应的值_用户名_27