学径 LearnPath

键值

1 / 1 · ← → 翻页

阅读模式

第 7 课

关联:按名字检索,而不是按位置

身份写在键上,位置只是存放的后果。

耶鲁大学卡片目录柜
耶鲁大学斯特林纪念图书馆的卡片目录柜。Ragesoss。来源:Wikimedia Commons,公有领域。

导言

课程目标

字典按名字取值。

集合只关心在不在。

检索方式选定问题。

现象

目录柜不是按第几个抽屉来用的

耶鲁大学卡片目录柜
耶鲁大学斯特林纪念图书馆的卡片目录柜。Ragesoss。来源:Wikimedia Commons,公有领域。

你拿出对得上的那张卡片。

原理

按下标插入,后面全部错位

列表把身份误当成座次。

新键不会掀翻旧键。

碳比「第 6 格」更难数错。

例证

字典:键到值

python
atomic = {"H": 1, "He": 2, "C": 6}
print(atomic["C"])
print("O" in atomic)
  • 方括号里写的是键
  • in 只检查键,不检查值

辨析

6 在不在这份字典里

in 问的是名字在不在。

不是值在不在。

键不存在则 KeyError。

6 是碳的原子序数,是值不是键。请先判断再点破。

例证

集合:成员关系

python
a = {"C", "H", "O"}
b = {"H", "N", "O"}
print(a & b)
print(a | b)
print(a - b)
  • 交、并、差
  • 不保留「第几个」,重复只留一份

原理

去重是换问题,不是优化存储

问「出现过哪些不同的元素」:集合。

问「碳被测到几次」:不要用集合。

讨论

你真正想问什么

第 3 次测量:列表。

碳的序数:字典。

共用哪些元素:集合。

辨析

空花括号是什么

空的一对花括号是空字典。

空集合必须写成 set()。

实践

本节练习

地球 1,火星 2,木星 95。

两夜交集只有火星。

请打开「在线 IDE」。地球 1、火星 2、木星 95。金星不是键。第一夜木星、土星、火星,第二夜火星、金星,交集只有火星。

讨论

起草前先看容器

先看类型,再看 in 在问什么。

选错结构,等于选错了问题。

小结

本节要点

检索方式决定能提出的问题。

键是身份,集合问在不在。

下一课

下一课

把同形状的过程藏进一个名字。

系数进,未知数出。

已到最后一页。可按 ← 回顾,或切换回阅读模式。