
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.5.4 字典

图1-5 使用负索引对列表进行切片
字典(dictionary)是键-值对的集合。字典中的值被映射到对应的键上,我们使用键从字典中检索元素。在字典中查找值非常快速。
当我们希望存储由某些键引用的元素时,字典很有用。例如,如果我们想存储兄弟姐妹的信息,并且希望通过名称检索,那么就可以使用字典。让我们来看一下实际代码。
Python中创建字典,可以使用dict函数:

或者使用字面量语法:

dict函数需要一个元组的列表。这些元组应该包含两个值:第一个值被用作键,第二个值被用作值。创建字典的字面量语法要简洁很多,而且这两种情况生成的字典是相同的。
与列表一样,我们使用方括号访问字典中的值。不过,方括号之间是键,而不是索引:

你可以使用任何不可变对象作为字典中的键。请记住。元组不可变,列表可变。数字、字符串和布尔值也不可变,因此可以用作字典键。
让我们创建一个字典,以元组为键:

在这个例子中,年龄映射的键是由名和姓组成的元组。如果想知道Jen的年龄,我们可以用键进行检索:

当我们检索一个不在字典里的键时,会发生什么?

我们收到一个错误提示。在获取值之前,我们可以先使用in操作符,检查键是否在字典中:

如下代码可以得到字典中所有键的类集合视图:

对值也可以做同样的操作:

使用in操作符可以检查某个值是否出现在字典的键和值中:

字典可以通过几种方式进行迭代。假设我们有如下的ages字典:

我们可以使用for循环来遍历字典中的键:

对值可以做同样的操作:

也可以对键-值对做同样的操作:

以上是我们目前需要了解的Python元素集的知识。让我们继续Python之旅,看看集合的解包。