简单掌握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) """