Competitive Programming Academy · 课时

将字典用作查找表

将键映射到值以实现快速访问

第 2 / 4 课13 个步骤

将字典用作查找表 是 CoddyKit 上的免费 Competitive Programming Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Competitive Programming Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Competitive Programming Academy 课程共包含 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 导师学习 Python — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「将字典用作查找表」课时是免费的吗?

是的 — 「将字典用作查找表」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Competitive Programming Academy 课程的其余内容,请升级到 CoddyKit PRO。 Competitive Programming Academy 课程共包含 4 节课。

「将字典用作查找表」这节课中我会学到什么?

将键映射到值以实现快速访问 你通过在浏览器中直接运行的动手代码来练习 Competitive Programming Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Competitive Programming Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Competitive Programming Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「将字典用作查找表」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Competitive Programming Academy 课中编写并运行代码吗?

能。每节 Competitive Programming Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用集合判断成员关系与去重
  2. 将字典用作查找表
  3. Counter 与 defaultdict 实战
  4. 使用映射分组与装桶
← 返回 Competitive Programming Academy