【源码共读】Python 标准模块 collections 中 Counter 类详解

1. 简介

Python 标准模块 collections 中的类 Counter 是字典类 dict 的一个子类,该类一般用于对可哈希对象进行计数,有时也被称为多重集合。在 Counter 类的对象中,数据存储方式为:可哈希对象作为键,而可哈希对象的计数作为值进行存储。

2. 使用

  1. 创建 Counter 对象:

    >>> from collections import Counter
    >>> c = Counter('abcdeabcdabcaba')
    
  2. 获得出现频率最高的元素:

    >>> c.most_common(3)
    [('a', 5), ('b', 4), ('c', 3)]
    
  3. 列出所有的键:

    >>> sorted(c)  
    ['a', 'b', 'c', 'd', 'e']
    
  4. 列出所有元素:

    >>> ''.join(sorted(c.elements()))
    'aaaaabbbbcccdde'
    
  5. 计算所有键的频率和:

    >>> sum(c.values())
    15
    
  6. 获得某可哈希对象的计数:

    >>> c['a']
    5
    
  7. 根据可迭代对象更新计数:

    >>> for elem in 'shazam':
    ...    c[elem] += 1
        
    >>> c['a'] 
    7
    
  8. 删除某可迭代对象:

    >>> del c['b'] 
    >>> c['b']  
    0
    
  9. 合并两个 Counter 对象:

    >>> d = Counter('simsalabim') 
    >>> c.update(d) 
    >>> c['a']  
    9
    >>> c['i']
    2
    
  10. 清空 Counter 对象:

    >>> c.clear()
    >>> c['a']
    0
    
  11. 需要特别注意的是,当某可哈希对象的计数被设为 0 0 0 或减至 0 0 0 后,该对象将仍然保存在 Counter 对象中直到该对象被删除或 Counter 对象本身被清空:

    >>> c = Counter('aaabbc')
    >>> c['b'] -= 2 
    >>> c.most_common()   
    [('a', 3), ('c', 1), ('b', 0)]
    >>> del c['b']
    >>> c.most_common()   
    [('a', 3), ('c', 1)]
    

关于 Counter 对象的其他详细使用,请见 https://www.demo2s.com/python/python-collections-counter.html

3. 分析

猜你喜欢

转载自blog.csdn.net/weixin_37780776/article/details/121321533
今日推荐