简单掌握Python的Collections模块中counter结构的用法
counter是一种特殊的字典,主要方便用来计数,key是要计数的item,value保存的是个数。
fromcollectionsimportCounter
>>>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)
|Createanew,emptyCounterobject.Andifgiven,countelements
|fromaninputiterable.Or,initializethecountfromanothermapping
|ofelementstotheircounts.
|
|>>>c=Counter()#anew,emptycounter
|>>>c=Counter('gallahad')#anewcounterfromaniterable
|>>>c=Counter({'a':4,'b':2})#anewcounterfromamapping
|>>>c=Counter(a=4,b=2)#anewcounterfromkeywordargs
默认请求下,访问不存在的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元素
delc['d']
b=Counter("dengxiaoxiao")
#通过subtract函数删除元素,元素个数可以变成负数。
c.subtract(b)
"""
"""
可以添加数据
b=Counter("qinghuabeida")
c.update(b)
"""