0Pricing
Coding Interview Prep · 课时

Counter 与 defaultdict 实战

统计项目而不产生缺少键的错误

Counter 与 defaultdict 实战 是 CoddyKit 上的免费 Coding Interview Prep 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Coding Interview Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Coding Interview Prep 课程共包含 4 节课。

计数变简单

统计元素出现的频率是竞赛中的常见任务。集合模块提供了两个工具,让计数变得轻松。🧮

缺失键问题

当您递增一个尚不存在的键时,普通字典会抛出 KeyError。特殊的数据结构可以替您消除这个麻烦。

认识计数器

计数器可以用一行代码统计任意可迭代对象,为每个元素记录其出现频率。不存在的键会被简单地视为 0。

from collections import Counter
freq = Counter(nums)

读取计数

像字典一样通过索引访问计数器,但读取不存在的键时会返回 0,而不是导致程序崩溃。这样查找就完全安全了。

print(freq[5])
print(freq[999])

出现次数最多的元素

调用 most_common,即可获取按计数从高到低排序的元素。传入一个数字,可以限制返回的前几项数量。

top3 = freq.most_common(3)

计数器也能运算

您可以对两个计数器进行add或减法运算来合并统计结果。它会自动合并相同的键,并使总数保持对应。

total = Counter(a) + Counter(b)

认识默认字典

默认字典会为每个新键提供一个全新的默认值,因此您无需先检查键是否存在。您只需要为它指定默认工厂。

from collections import defaultdict
count = defaultdict(int)

无需保护即可递增

使用默认字典(整数)时,不存在的键会从 0 开始,因此可以直接递增。这样循环中就不需要用条件判断来增加干扰。

for v in nums:
    count[v] += 1

默认使用列表

当每个键需要收集多个值时,请使用默认字典(列表)。向全新的键执行追加操作时,会自动从一个新的空列表开始。

groups = defaultdict(list)
groups[key].append(item)

计数器还是默认字典

如果只需要统计元素,请使用计数器;如果每个键需要对应列表、集合或自定义默认值,请使用默认字典。🎯

一行判断字母异位词

两个单词的计数器相等,当且仅当它们是字母异位词。这种比较可以一次处理每个字母的出现频率。

is_anagram = Counter(s) == Counter(t)

快速检查

您希望在安全递增缺失键的同时统计出现次数。

回顾

计数器可以即时统计并排列元素;默认字典则免去了统计、收集列表或集合时检查缺失键的步骤。两者都能消除冗余代码。🚀

常见问题解答

「Counter 与 defaultdict 实战」课时是免费的吗?

是的 — 「Counter 与 defaultdict 实战」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Coding Interview Prep 课程的其余内容,请升级到 CoddyKit PRO。 Coding Interview Prep 课程共包含 4 节课。

「Counter 与 defaultdict 实战」这节课中我会学到什么?

统计项目而不产生缺少键的错误 你通过在浏览器中直接运行的动手代码来练习 Coding Interview Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Coding Interview Prep 需要有经验吗?

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

「Counter 与 defaultdict 实战」课时需要多长时间?

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

我能在这节 Coding Interview Prep 课中编写并运行代码吗?

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

此课程中的所有课时

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