Python的Counter模块_20210111

Counter是dict的一个子类,用来方便的计数
1.导入Conter模块

from collections import Counter

2.创建Counter

>>> c = Counter()  #创建一个空Counter
>>> c
Counter()
****************************************************
>>> c = Counter(['A','B','D','A','B'])  #通过迭代器创建一个Counter
>>> c
Counter({
    
    'A': 2, 'B': 2, 'D': 1})
***************************************************
>>> c = Counter({
    
    'yao':3,'xiao':5}) #通过映射创建
>>> c
Counter({
    
    'xiao': 5, 'yao': 3})
******************************************
>>> c = Counter(yao=3,xiao=5)  #通过关键字创建
>>> c
Counter({
    
    'xiao': 5, 'yao': 3})

3.访问Counter
Counter实现了字典的__missing__方法,当访问不存在的key时,返回0

>>> c
Counter({
    
    'xiao': 5, 'yao': 3})
>>> c['xiao']
5
>>> c['feng']
0

4.Counter常用方法

#elements:按照频次返回序列
>>> c = Counter(a=3,b=4,c=6)
>>> c
Counter({
    
    'c': 6, 'b': 4, 'a': 3})

>>> list(c.elements())
['a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'c', 'c']

#按照统计的频次降序排列
>>> c.most_common(3)
[('c', 6), ('b', 4), ('a', 3)]

#对应key频次相减
>>> test1 = Counter(a=3,b=6,c=1)
>>> test2 = Counter(a=2,b=7,c=3)
>>> test1.subtract(test2)
>>> test1
Counter({
    
    'a': 1, 'b': -1, 'c': -2})

#数学运算
>>> test1
Counter({
    
    'b': 6, 'a': 3, 'c': 1}) 

>>> test2
Counter({
    
    'b': 7, 'c': 3, 'a': 2})

>>> test1+test2 #对应key的value相加
Counter({
    
    'b': 13, 'a': 5, 'c': 4})

>>> test1-test2 #对应key的value相减
Counter({
    
    'a': 1})

>>> test1&test2 #求与,取key对应value较小的
Counter({
    
    'b': 6, 'a': 2, 'c': 1})

>>> test1|test2  #求并,取key对应value较大者
Counter({
    
    'b': 7, 'a': 3, 'c': 3})

#提取value值
>>> test1
Counter({
    
    'b': 6, 'a': 3, 'c': 1})
>>> test1.values()
dict_values([3, 6, 1])
>>> sum(test1.values())
10

常见做法:
sum(c.values())                 # 继承自字典的.values()方法返回values的列表,再求和
c.clear()                       # 继承自字典的.clear()方法,清空counter
list(c)                         # 返回key组成的list
set(c)                          # 返回key组成的set
dict(c)                         # 转化成字典
c.items()                       # 转化成(元素,计数值)组成的列表
Counter(dict(list_of_pairs))    # 从(元素,计数值)组成的列表转化成Counter
c.most_common()[:-n-1:-1]       # 最小n个计数的(元素,计数值)组成的列表
c += Counter()                  # 利用counter的相加来去除负值和0的值

猜你喜欢

转载自blog.csdn.net/a18829292719/article/details/112464734
今日推荐