将字典用作查找表
将键映射到值以实现快速访问
将字典用作查找表 是 CoddyKit 上的免费 Coding Interview Prep 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Coding Interview Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Coding Interview Prep 课程共包含 4 节课。
字典的概念
字典将键映射到值,让您可以按名称获取已存储的答案,而不必逐个扫描。它就是竞赛中的查找表。🔑
常数时间访问
和集合一样,字典会对键进行哈希,因此读写大致都是 O(1)。正因为速度快,它可以替代缓慢的线性查找。
创建字典
在花括号中写入键值对,或者使用一对普通花括号从空字典开始。每个键恰好对应一个值。
age = {'amy': 21, 'bob': 19}
empty = {}按键读取
在键两侧使用方括号来获取值。键的作用类似索引,但它可以是字符串、数字或元组。
print(age['amy'])缺失的键会导致崩溃
使用方括号读取不存在的键会抛出 KeyError。在竞赛中,这会立即变成运行时错误判定。
使用 get 安全读取
使用 get,在键不存在时返回默认值,而不是导致程序崩溃。这是读取可能缺失的键时最安全的方式。
count = age.get('zoe', 0)插入与更新
为键赋值时,如果键不存在就会添加它,如果已经存在就会覆盖旧值。同一种写法同时适用于插入和更新。
age['cara'] = 25
age['amy'] = 22读取前先检查
先使用成员运算符检查键是否存在,再依赖该键。这样可以避免 KeyError,也能让逻辑更加明确。
if 'bob' in age:
print(age['bob'])将值映射到位置
一种经典技巧是存储每个值的索引,这样之后就能一步查出它所在的位置。它非常适合寻找成对元素的问题。
pos = {}
for i, v in enumerate(nums):
pos[v] = i遍历键值对
使用条目同时遍历键和值。相比在循环中再次查找每个值,这种方式更加简洁。
for name, a in age.items():
print(name, a)键必须可哈希
字典的键必须是可哈希的,因此可以使用数字、字符串或元组。列表不能作为键,但由整数构成的元组可以。
seen = {(0, 0): 'start'}快速检查
您想读取一个可能不存在的键,同时避免程序崩溃。
回顾
字典将键映射到值,以 O(1) 的时间完成查找。使用 get 安全读取,并存储索引,将缓慢的扫描变成即时查找。🚀
用 AI 导师学习 Coding Interview Prep — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 90
- 课程
- 360
常见问题解答
「将字典用作查找表」课时是免费的吗?
是的 — 「将字典用作查找表」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Coding Interview Prep 课程的其余内容,请升级到 CoddyKit PRO。 Coding Interview Prep 课程共包含 4 节课。
「将字典用作查找表」这节课中我会学到什么?
将键映射到值以实现快速访问 你通过在浏览器中直接运行的动手代码来练习 Coding Interview Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Coding Interview Prep 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Coding Interview Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「将字典用作查找表」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Coding Interview Prep 课中编写并运行代码吗?
能。每节 Coding Interview Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。