一:Python文档解释
概念:
Counter
是dict
的子类,用于计数可哈希对象。它是一个无序的容器,元素被存储为字典键,它们的计数被存储为字典值。计数允许包括零或负计数的任何整数值。
>>>a = [1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 6]
>>> from collections import Counter
>>> c = Counter(a) # Counter接受一个可迭代对象,返回Counter对象
>>> c # 这个对象由迭代对象的元素为键,元素个数为值
Counter({2: 4, 3: 3, 1: 2, 4: 1, 6: 1})
Counter的特点:
1.计数器对象的接口和字典一样,除了它们对于缺失项目返回一个零计数,而不是引发KeyError
>>> Counter({2: 4, 3: 3, 1: 2, 4: 1, 6: 1})
>>> c[5] # count of a missing element is zero
0
2.将计数设置为零不会从计数器中删除元素。使用才能del
将其完全删除:
>>> Counter({2: 4, 3: 3, 1: 2, 4: 1, 6: 1})
>>> c[6] = 0
>>> c
Counter({2: 4, 3: 3, 1: 2, 4: 1, 6: 0}) # 可以看到 6 并未被删除,只是值为零
>>> a
[1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 6]
>>> del cnt[6]
>>> cnt
Counter({2: 4, 3: 3, 1: 2, 4: 1})
二:Counter的使用,most_common
([n])
参数:n
返回n个最常见的元素及其计数的列表,从最常见到最少见。如果省略n或为None
,most_common()
返回计数器中所有元素。具有相等计数的元素是任意排序的:
>>> c.most_common()
[(2, 4), (3, 3), (1, 2), (4, 1), (6, 1)]
>>> c.most_common(3)
[(2, 4), (3, 3), (1, 2)]
>>> um = cnt.most_common()
>>> type(um)
<type 'list'>
>>> um[0][1] # 获取迭代对象中最多元素的个数
4
>>> um[0][0] # 获取迭代对象终最多的元素
2