Counter是Python中用于统计元素频次的高效工具,支持列表、字符串等可迭代对象;其以字典形式返回结果,键为元素,值为出现次数;可进行访问计数、获取最常见元素、更新或减去数据及数学运算;适用于词频统计、判断异位词和算法题等场景。

Python 的 collections.Counter 是一个非常实用的工具,用于统计可迭代对象中元素的出现次数。它属于 collections 模块,使用起来简洁高效,特别适合处理计数相关的任务。
基本用法
Counter 接收一个可迭代对象(如列表、字符串、元组等),自动统计每个元素出现的次数,并以字典形式返回,键是元素,值是对应的计数。
from collections import Counter统计列表中的元素
cnt1 = Counter(['a', 'b', 'a', 'c', 'b', 'a']) print(cnt1) # 输出: Counter({'a': 3, 'b': 2, 'c': 1})
统计字符串中字符
cnt2 = Counter('hello') print(cnt2) # 输出: Counter({'l': 2, 'h': 1, 'e': 1, 'o': 1})
常用操作
Counter 不仅能计数,还支持多种便捷操作:
-
访问某个元素的计数:像字典一样使用
counter[key],如果 key 不存在,返回 0 而不是报错。 -
获取最常见的元素:使用
most_common(n)获取前 n 个频率最高的元素。 -
更新计数:使用
update()添加更多数据;使用subtract()减去计数。 - 数学运算:支持 +、-、&、| 等集合风格的运算,适用于合并或比较多个 Counter。
立即学习“Python免费学习笔记(深入)”;
cnt = Counter(['x', 'y', 'x'])print(cnt['x']) # 输出: 3 print(cnt['z']) # 输出: 0 (不会报错)
print(cnt.most_common(2)) # 输出: [('x', 2), ('y', 1)]
cnt.update(['x', 'z']) # 增加新数据 print(cnt) # x:3, y:1, z:1
cnt.subtract(['x']) # 减去计数 print(cnt) # x:2, y:1, z:1
实际应用场景
Counter 在实际编程中用途广泛:
- 统计文本中单词频率,快速找出高频词。
- 判断两个字符串是否为字母异位词(通过比较两个 Counter 是否相等)。
- 配合正则表达式清洗并分析日志或用户输入。
- 在算法题中简化频次统计逻辑,比如“找出只出现一次的元素”。
基本上就这些。Counter 让计数变得直观又高效,掌握它能让代码更简洁清晰。











