1. 简介
Python
标准模块 collections
中的类 Counter
是字典类 dict
的一个子类,该类一般用于对可哈希对象进行计数,有时也被称为多重集合。在 Counter
类的对象中,数据存储方式为:可哈希对象作为键,而可哈希对象的计数作为值进行存储。
2. 使用
-
创建
Counter
对象:>>> from collections import Counter >>> c = Counter('abcdeabcdabcaba')
-
获得出现频率最高的元素:
>>> c.most_common(3) [('a', 5), ('b', 4), ('c', 3)]
-
列出所有的键:
>>> sorted(c) ['a', 'b', 'c', 'd', 'e']
-
列出所有元素:
>>> ''.join(sorted(c.elements())) 'aaaaabbbbcccdde'
-
计算所有键的频率和:
>>> sum(c.values()) 15
-
获得某可哈希对象的计数:
>>> c['a'] 5
-
根据可迭代对象更新计数:
>>> for elem in 'shazam': ... c[elem] += 1 >>> c['a'] 7
-
删除某可迭代对象:
>>> del c['b'] >>> c['b'] 0
-
合并两个
Counter
对象:>>> d = Counter('simsalabim') >>> c.update(d) >>> c['a'] 9 >>> c['i'] 2
-
清空
Counter
对象:>>> c.clear() >>> c['a'] 0
-
需要特别注意的是,当某可哈希对象的计数被设为 0 0 0 或减至 0 0 0 后,该对象将仍然保存在
Counter
对象中直到该对象被删除或Counter
对象本身被清空:>>> c = Counter('aaabbc') >>> c['b'] -= 2 >>> c.most_common() [('a', 3), ('c', 1), ('b', 0)] >>> del c['b'] >>> c.most_common() [('a', 3), ('c', 1)]
关于 Counter
对象的其他详细使用,请见 https://www.demo2s.com/python/python-collections-counter.html 。