6. python Collections -- Counter

    提供计数器工具以支持方便快捷的计数。 例如:app

    image.png

语法:ide

    class collections.Counter([iterable-or-mapping])工具

    Counter是用于计算可哈希对象的字典子类。它是一个无序的集合,其中元素以字典键的形式存储,并将其计数存储为字典值。spa

    计数容许为包括零或负计数的任何整数值。Counter类与其余语言的bag或multisets相似。对象

    

    元素从一个迭代中计数或从另外一个映射(或计数器)初始化:blog

    image.png

    新的空的计数器排序

    来自可迭代器的新计数器接口

    来自映射的新计数器element

    来自关键字args的新计数器数学


    计数器对象有一个字典接口,只不过它们返回一个零计数而不是引起一个KeyError:

    image.png

#缺乏元素的数量为零


        可是,将计数设置为零不会从计数器中删除元素。 使用del可彻底删除它:

    image.png

    Counter对象支持除全部字典可用的方法以外的三种方法:

    elements()

            在元素上返回一个迭代器,重复每一个元素的次数。

            元素以任意顺序返回。若是一个元素的计数小于1,elements( )将忽略它。

        image.png

        0 和 -2 都小于最低一个元素的要求,因此不输出。


    most_common([n])

            返回n个最多见元素及其计数的列表,从最多见到最少。

            若是省略 n 或 None,则most_common( ) 返回计数器中的全部元素。

            具备相同计数的元素是任意排序的:

    image.png

            列出同一字符重复数量前3的计数,若是不写n,则会打印出全部相同元素的计数。


    subtract([iterable-or-mapping])

    从迭代或从另外一个映射(或计数器)中减去元素。与dict.update( )相似,但减去计数而不是替换它们。输入和输出均可以是零或负数。

    image.png

    一般的字典方法可用于Counter对象,除了两个针对计数器的工做方式不一样。

    

 fromkeys(iterable)

    Counter对象未实现此类方法。


    update([iterable-or-mapping])

    元素从可迭代计数器或从另外一个映射(或计数器)添加。像dict.update()同样,但添加计数而不是替换它们。

    此外,指望迭计是元素序列,而不是(键,值)对的序列。

    

    处理Counter对象的经常使用模式:

    image.png

    #全部计数的总和

    #重置全部计数

    #列出独特元素

    #转换为一个集合

    #转换为常规字典

    #转换为(elem,cnt)对列表

    #从(elem,cnt)对列表中进行转换

    #n最小公共元素

    #删除零和负数


    提供了几个数学运算,用于组合Counter对象以生成多个集合(计数器的计数大于零)。

    加法和减法经过添加或减去相应元素的计数来组合计数器。

    交集和并集返回相应计数的最小值和最大值。

    每一个操做均可以接受带符号计数的输入,但输出将排除计数为零或更小的结果。

    image.png


    一元加法和减法是添加空白计数器 或 从空白计数器中减去 的快捷方式。

    image.png

        3.3版新增:增长了对一元加号,一元减号和就地多重操做的支持。



注意:

    计数器主要用于处理正整数来表示运行计数;可是,注意不要没必要要地排除须要其余类型或负值的用例。

    为了帮助解决这些用例,本节介绍了最小范围和类型限制。

    (1)Counter类自己是一个字典子类,其键和值没有限制。这些值旨在表示计数,但您能够在值字段中存储任何内容。

    (2)most_common( )方法只要求值是可计数的。

    (3)对于诸如 c[key] += 1的就地操做,值类型只须要支持加法和减法。因此分数、浮点数和小数将会起做用,而且负值被支持。

            update( )和subtract( ) 也是如此,它们容许输入和输出的负值和零值的状况。

    (4)multiset方法仅用于具备正值的用例。输入可能为负值或零,但仅建立具备正值的输出。没有类型限制,但值类型须要支持加法,减法和比较。

    (5)elements( )方法须要整数计数。它忽略零和负数。

相关文章
相关标签/搜索