在 Python 中,Counter
是 collections
模块中的一个类,用于统计可迭代对象中元素的出现次数,并以字典的形式返回,键为元素,值为对应的计数。它非常适合处理频率统计问题。
用之前必须先导入
from collections import Counter
统计元素的频率
ss = "hello world"
ss_counter = Counter(ss)
print(ss_counter)
Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
nums = [1, 2, 2, 3, 3, 3, 4]
nums_counter = Counter(nums)
print(nums_counter)
Counter({3: 3, 2: 2, 1: 1, 4: 1})
访问
nums = [1, 2, 2, 3, 3, 3, 4,10,10,10]
nums_counter = Counter(nums)
nums_counter[1]#1
nums_counter[2]#2
nums_counter[3]#3
nums_counter[4]#1
nums_counter[10]#3nums_counter[40]#0
nums_counter[100]#0
中括号[ ]中是键key,没有则返回0。
ss = "hello world"
ss_counter = Counter(ss)
ss_counter['h']#1
ss_counter['l']#3
ss_counter['w']#1
ss_counter['asss']#0
counter.elements():列出元素
elements() 方法返回一个迭代器,包含所有的元素(按频次重复)。可以用 list() 转换成列表:
ss = "hello world"
ss_counter = Counter(ss)
ss_counter.elements() # <itertools.chain at 0x1acefc9b3a0>
list(ss_counter.elements()) # ['h', 'e', 'l', 'l', 'l', 'o', 'o', ' ', 'w', 'r', 'd']
counter.most_common:找出最常见的元素
返回出现次数最多的前 n 个元素,按频率降序排列。如果不传参数,则返回所有元素的频率排名。
ss = "abababaabbbbbcccd"
ss_counter = Counter(ss)
ss_counter.most_common(1)#[('b', 8)]
ss_countaer.most_common(2)#[('b', 8), ('a', 5)]
ss_counter.most_common(3)#[('b', 8), ('a', 5), ('c', 3)]
ss_counter.most_common()#[('b', 8), ('a', 5), ('c', 3), ('d', 1)]
更新或减少.update()和.subtract()
ss = "aabbbc"
ss_counter = Counter(ss)
ss_counter # Counter({'a': 2, 'b': 3, 'c': 1})
ss_counter.update('zzxxyy')
ss_counter#Counter({'a': 2, 'b': 3, 'c': 1, 'z': 2, 'x': 2, 'y': 2})
ss_counter.subtract('zxy')
ss_counter#Counter({'a': 2, 'b': 3, 'c': 1, 'z': 1, 'x': 1, 'y': 1})