WMX · 随记
·Python· 3 分钟阅读

Counter:统计频次时别丢掉重复信息

集合能回答“是否出现过”,但无法回答出现多少次。日志级别、标签和词频分析通常需要一个从元素到次数的映射。

▶ 本文含视频讲解
▶ 教学视频手动播放 · 英语讲解

Learn Python — Full Course for Beginners

Python 入门课程作为语法与编程背景复习;本文使用的较新标准库特性不保证在该课程中逐项覆盖。此为外部原版课程,多篇笔记可能共用;未剪辑为本文专属视频。

播放器需要能访问 YouTube 的网络;若这里无法加载,可打开原视频。本文与本地图解仍可独立阅读。

Python 系列概览:输入校验、数据处理与行为验证
Python 系列概览:输入校验、数据处理与行为验证 点击图片查看大图 ↗

问题从哪里出现

集合能回答“是否出现过”,但无法回答出现多少次。日志级别、标签和词频分析通常需要一个从元素到次数的映射。

理解核心机制

Counter 接收迭代对象并统计次数,缺失键读取为零。most_common 便于查看高频项;加减运算对零和负计数的处理,需要与 subtract 等原地操作区分。

动手做一个小实验

Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。

Python7 行 · 可横向滚动
from collections import Counter
counts = Counter(["info", "error", "info", "warn"])
assert counts["debug"] == 0
assert counts["info"] == 2
counts.update(["error", "error"])
print(counts.most_common(2))
assert counts.total() == 6

适用边界与常见误区

高基数数据仍可能让字典不断增长。若需要流式近似统计或固定窗口,需要额外的数据结构与过期策略,Counter 不会自动限制内存。

继续练习

比较 Counter 相减与 subtract 对负数结果的处理,再决定库存差异是否允许保留负数。

参考资料

阅读相关官方文档或原始资料 ↗

← 返回文章归档