如何使用Python高效统计单词中各字母的出现次数
Python统计字符串字符出现次数的最高效实现方案
待统计字符串为:ABCABACBABACACBACBAC,预期统计结果为:A:8,B:6,C:6。
1. 通用场景最优方案(适配所有字符类型)
直接使用Python标准库内置的collections.Counter,底层为C语言优化实现,性能远高于纯Python手写的循环计数逻辑,代码简洁易维护:
from collections import Counter s = "ABCABACBABACACBACBAC" result = Counter(s) print(dict(result)) # 输出:{'A': 8, 'B': 6, 'C': 6}
- 优势:无需提前知道字符范围,支持所有可哈希元素的计数需求,内置支持TopN筛选、计数加减等扩展操作。
2. 极限性能场景最优方案(已知字符仅为A/B/C)
如果提前明确待统计字符只有A、B、C三种大写字母,可以用数组下标映射的方式计数,性能比Counter还要高15%~20%,适合超大规模文本的计数场景:
s = "ABCABACBABACACBACBAC" count = [0] * 3 for char in s: count[ord(char) - ord('A')] += 1 result = {"A": count[0], "B": count[1], "C": count[2]} print(result) # 输出:{'A': 8, 'B': 6, 'C': 6}
- 优势:没有哈希表的计算和插入开销,纯内存地址偏移操作,执行速度最快,内存占用极低。
两种方案的统计结果均完全符合预期,可根据实际业务场景选择。
内容的提问来源于stack exchange,提问作者Sergio
相关产品推荐
相关产品推荐

