章节主张
字典的本质价值,在于它让程序更接近真实对象建模,而不只是堆叠值的顺序容器。
中文释读
如果说列表让你开始处理一组值,那么字典则让你第一次像在做‘对象描述’。你可以用键值对表达人、地点、配置、状态乃至嵌套结构。作者在这一章逐步把访问、修改、遍历和嵌套串起来,其实是在为后面的 JSON、API 响应、Django 上下文和游戏对象状态建模打底。
关键论点
- 字典让字段化表达成为可能。
- 键值对比位置索引更接近真实建模。
- 嵌套会成为后续复杂数据处理的日常形态。
行动清单
- 用字典去描述现实对象而不是只做练习题。
- 熟悉 get()、items()、keys()、values() 的场景差异。
- 练习列表套字典、字典套列表、字典套字典。
源章节深读
第 6 章 字典 在本章中,你将学习让你能够将相关信息关联起来的 Python 字典,以 及如何访问和修改字典中的信息。字典可存储的信息量⼏乎不受限 制,因此我们会演⽰如何遍历字典中的数据。另外,你还将学习如何 存储字典的列表、列表的字典和字典的字典。 理解字典后,你就能够更准确地为各种真实物体建模。你可以创建⼀个表 ⽰⼈的字典,然后在其中存储你想存储的任何信息:姓名、年龄、地址, 以及可以描述这个⼈的任何其他⽅⾯。你还能够在字典中存储任意两种相 关的信息,如⼀系列单词及其含义、⼀系列⼈名及其喜欢的数、⼀系列⼭ 脉及其海拔等。 6.1 ⼀个简单的字典 来看⼀个包含外星⼈的游戏,这些外星⼈的颜⾊和分数各不相同。下⾯是 ⼀个简单的字典,存储了有关特定外星⼈的信息: alien.py alien_0 = {'color': 'green', 'points': 5} print(alien_0['color']) print(alien_0['points']) 字典 alien_0 存储了这个外星⼈的颜⾊和分数。
6.1 一个简单的字典
6.1 ⼀个简单的字典 来看⼀个包含外星⼈的游戏,这些外星⼈的颜⾊和分数各不相同。下⾯是 ⼀个简单的字典,存储了有关特定外星⼈的信息: alien.py alien_0 = {'color': 'green', 'points': 5} print(alien_0['color']) print(alien_0['points']) 字典 alien_0 存储了这个外星⼈的颜⾊和分数。
这节解决什么:这一节主要解决《第 6 章 字典》里一个更具体的子问题:6.1 一个简单的字典 该怎样落到实际代码或项目动作上。
怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。
提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。
6.2 使用字典
6.2 使⽤字典 在 Python 中,字典( dictionary )是⼀系列键值对。每个键都与⼀个值关 联,可以使⽤键来访问与之关联的值。与键相关联的值可以是数、字符 串、列表乃⾄字典。事实上,可将任意 Python 对象⽤作字典中的值。 在 Python 中,字典⽤放在花括号({})中的⼀系列键值对表⽰,如前⾯的 ⽰例所⽰: alien_0 = {'color': 'green', 'points': 5} 键值对包含两个相互关联的值。
这节解决什么:这一节主要解决《第 6 章 字典》里一个更具体的子问题:6.2 使用字典 该怎样落到实际代码或项目动作上。
怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。
提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。
6.3 遍历字典
6.3 遍历字典 ⼀个 Python 字典可能只包含⼏个键值对,也可能包含数百万个键值对。鉴 于字典可能包含⼤量数据, Python ⽀持对字典进⾏遍历。字典可⽤于以各 种⽅式存储信息,因此有多种遍历⽅式:既可遍历字典的所有键值对,也 可只遍历键或值。 6.3.1 遍历所有的键值对 在探索各种遍历⽅法前,先来看⼀个新字典,它⽤于存储有关⽹站⽤户的 信息。
这节解决什么:这一节主要解决《第 6 章 字典》里一个更具体的子问题:6.3 遍历字典 该怎样落到实际代码或项目动作上。
怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。
提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。
6.4 嵌套
6.4 嵌套 有时候,需要将多个字典存储在列表中或将列表作为值存储在字典中,这 称为嵌套。可以在列表中嵌套字典,在字典中嵌套列表,甚⾄在字典中嵌 套字典。正如下⾯的⽰例将演⽰的,嵌套是⼀个强⼤的功能。 6.4.1 字典列表 字典 alien_0 包含⼀个外星⼈的各种信息,但⽆法存储第⼆个外星⼈的信 息,更别说屏幕上全部外星⼈的信息了。如何管理成群结队的外星⼈呢? ⼀种办法是创建⼀个外星⼈列表,其中每个外星⼈都是⼀个字典,包含有 关该外星⼈的各种信息。
这节解决什么:这一节主要解决《第 6 章 字典》里一个更具体的子问题:6.4 嵌套 该怎样落到实际代码或项目动作上。
怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。
提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。
6.5 小结
6.5 ⼩结 在本章中,你⾸先学习了如何定义字典,以及如何使⽤存储在字典中的信 息。然后学习了如何访问和修改字典中的元素,以及如何遍历字典中的所 有信息。接着学习了如何遍历字典中的所有键值对、所有的键和所有的 值。你还学习了如何在列表中嵌套字典,如何在字典中嵌套列表,以及如 何在字典中嵌套字典。 在下⼀章中,你将学习 while 循环,以及如何从⽤户那⾥获取输⼊。这是 激动⼈⼼的⼀章,让你知道如何将程序变成可交互的,能够对⽤户的输⼊ 做出响应。
这节解决什么:这一节主要解决《第 6 章 字典》里一个更具体的子问题:6.5 小结 该怎样落到实际代码或项目动作上。
怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。
提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。
辨析题
为什么很多 Python 程序一复杂就离不开字典?
因为真实世界的数据往往带有字段语义,字典比纯列表更适合表达这种结构。