• 技术文章 >后端开发 >Python教程

    简单掌握Python的Collections模块中counter结构的用法

    2016-07-22 08:56:25原创960
    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) 
    """ 
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Python Collections counter

    相关文章推荐

    • python如何输出hello world代码• python发腾讯微博代码分享• 在Django的视图(View)外使用Session的方法• python实现2014火车票查询代码分享• Python类的基础入门知识
    1/1

    PHP中文网