counter 是一种特殊的字典,主要方便用来计数,key 是要计数的 item,value 保存的是个数。
from collections import Counter
>>> c = Counter(\'hello,world\')
Counter({\'l\': 3, \'o\': 2, \'e\': 1, \'d\': 1, \'h\': 1, \',\': 1, \'r\': 1, \'w\': 1})
初始化可以传入三种类型的参数:字典,其他 iterable 的数据类型,还有命名的参数对。
| __init__(self, iterable=None, **kwds)
| Create a new, empty Counter object. And if given, count elements
| from an input iterable. Or, initialize the count from another mapping
| of elements to their counts.
|
| >>> c = Counter() # a new, empty counter
| >>> c = Counter(\'gallahad\') # a new counter from an iterable
| >>> c = Counter({\'a\': 4, \'b\': 2}) # a new counter from a mapping
| >>> c = Counter(a=4, b=2) # a new counter from keyword args
默认请求下,访问不存在的 item,会返回 0。Counter 可以用来统计某些数据的出现次数,比如一个很长的数字串 numbers = \”67642192097348921647512014651027586741512651\” 中每个数字的频率:
>>> c = Counter(numbers) # c 存储了每个数字的频率 >>> c.most_common() # 所有数字按照频率排序。如果 most_common 接受了 int 参数 n,将返回频率前n 的数据,否则会返回所有的数据 [(\'1\', 8), (\'2\', 6), (\'6\', 6), (\'5\', 5), (\'4\', 5), (\'7\', 5), (\'0\', 3), (\'9\', 3), (\'8\', 2), (\'3\', 1)]
此外,你还可以对两个 Counter 对象进行 +, -,min, max 等操作。
综合示例:
print(\'Counter类型的应用\')
c = Counter(\"dengjingdong\")
#c = Counter({\'n\': 3, \'g\': 3, \'d\': 2, \'i\': 1, \'o\': 1, \'e\': 1, \'j\': 1})
print(\"原始数据:\",c)
print(\"最多的两个元素:\",c.most_common(2))#输出数量最多的元素
print(\"d的个数:\",c[\'d\'])#输出d的个数
print(c.values())#输出字典的value列表
print(sum(c.values()))#输出总字符数
print(sorted(c.elements()))#将字典中的数据,按字典序排序
print(\'\\n\\n\')
\"\"\"
#删除所有d元素
del c[\'d\']
b = Counter(\"dengxiaoxiao\")
#通过subtract函数删除元素,元素个数可以变成负数。
c.subtract(b)
\"\"\"
\"\"\"
可以添加数据
b = Counter(\"qinghuabeida\")
c.update(b)
\"\"\"