简单掌握python的collections模块中counter结构的用法

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)
“””

Posted in 未分类

发表评论