• 【转】python Counter模块


    >>> c = Counter()                           # 创建一个新的空counter
    >>> c = Counter('abcasdf')                  # 一个迭代对象生成的counter
    >>> c = Counter({'red': 4, 'yello': 2})      # 一个映射生成的counter
    >>> c = Counter(cats=2, dogs=5)             # 关键字参数生成的counter
     
    # counter 生成counter, 虽然这里并没有什么用
    >>> from collections import Counter
    >>> c = Counter('abcasd')
    >>> c
    Counter({'a': 2, 'c': 1, 'b': 1, 's': 1, 'd': 1})
    >>> c2 = Counter(c)
    >>> c2
    Counter({'a': 2, 'c': 1, 'b': 1, 's': 1, 'd': 1})

    因为 Counter 实现了字典的 __missing__ 方法, 所以当访问不存在的key的时候,返回值为0:

    >>> c = Counter(['apple', 'pear'])
    >>> c['orange']
    0

    counter 常用的方法:

    # elements() 按照counter的计数,重复返回元素
    >>> c = Counter(a=4, b=2, c=0, d=-2)
    >>> list(c.elements())
    ['a', 'a', 'a', 'a', 'b', 'b']
     
    # most_common(n) 按照counter的计数,按照降序,返回前n项组成的list; n忽略时返回全部
    >>> Counter('abracadabra').most_common(3)
    [('a', 5), ('r', 2), ('b', 2)]
     
    # subtract([iterable-or-mapping]) counter按照相应的元素,计数相减
    >>> c = Counter(a=4, b=2, c=0, d=-2)
    >>> d = Counter(a=1, b=2, c=3, d=4)
    >>> c.subtract(d)
    >>> c
    Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6})
     
    # update([iterable-or-mapping]) 不同于字典的update方法,这里更新counter时,相同的key的value值相加而不是覆盖
    # 实例化 Counter 时, 实际也是调用这个方法
     
     
    # Counter 间的数学集合操作
    >>> c = Counter(a=3, b=1, c=5)
    >>> d = Counter(a=1, b=2, d=4)
    >>> c + d                       # counter相加, 相同的key的value相加
    Counter({'c': 5, 'a': 4, 'd': 4, 'b': 3})
    >>> c - d                       # counter相减, 相同的key的value相减,只保留正值得value
    Counter({'c': 5, 'a': 2})
    >>> c & d                       # 交集:  取两者都有的key,value取小的那一个
    Counter({'a': 1, 'b': 1})
    >>> c | d                       # 并集:  汇聚所有的key, key相同的情况下,取大的value
    Counter({'c': 5, 'd': 4, 'a': 3, 'b': 2})
    常见做法:
    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的值
  • 相关阅读:
    [mysql] information_schema数据库表
    Linux 进程操作_12
    Linux 标准输入输出_11
    apache2
    poj 3083 Children of the Candy Corn 夜
    poj 2151 Check the difficulty of problems 夜
    poj 3274 Gold Balanced Lineup 夜
    poj 3414 Pots 夜
    poj Finicky Grazers 3184 夜
    poj 3253 Fence Repair 夜
  • 原文地址:https://www.cnblogs.com/zx3212/p/9678079.html
Copyright © 2020-2023  润新知