python中的Counter函数

在 Python 中,Countercollections 模块中的一个类,用于统计可迭代对象中元素的出现次数,并以字典的形式返回,键为元素,值为对应的计数。它非常适合处理频率统计问题。

用之前必须先导入

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]#3

nums_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() # 
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})

你可能感兴趣的:(python,python,开发语言)