提供计数器工具以支持方便快捷的计数。 例如:app
语法:ide
class collections.Counter([iterable-or-mapping])工具
Counter是用于计算可哈希对象的字典子类。它是一个无序的集合,其中元素以字典键的形式存储,并将其计数存储为字典值。spa
计数容许为包括零或负计数的任何整数值。Counter类与其余语言的bag或multisets相似。对象
元素从一个迭代中计数或从另外一个映射(或计数器)初始化:blog
新的空的计数器排序
来自可迭代器的新计数器接口
来自映射的新计数器element
来自关键字args的新计数器数学
计数器对象有一个字典接口,只不过它们返回一个零计数而不是引起一个KeyError:
#缺乏元素的数量为零
可是,将计数设置为零不会从计数器中删除元素。 使用del可彻底删除它:
Counter对象支持除全部字典可用的方法以外的三种方法:
elements()
在元素上返回一个迭代器,重复每一个元素的次数。
元素以任意顺序返回。若是一个元素的计数小于1,elements( )将忽略它。
0 和 -2 都小于最低一个元素的要求,因此不输出。
most_common([n])
返回n个最多见元素及其计数的列表,从最多见到最少。
若是省略 n 或 None,则most_common( ) 返回计数器中的全部元素。
具备相同计数的元素是任意排序的:
列出同一字符重复数量前3的计数,若是不写n,则会打印出全部相同元素的计数。
subtract([iterable-or-mapping])
从迭代或从另外一个映射(或计数器)中减去元素。与dict.update( )相似,但减去计数而不是替换它们。输入和输出均可以是零或负数。
一般的字典方法可用于Counter对象,除了两个针对计数器的工做方式不一样。
fromkeys(iterable)
Counter对象未实现此类方法。
update([iterable-or-mapping])
元素从可迭代计数器或从另外一个映射(或计数器)添加。像dict.update()同样,但添加计数而不是替换它们。
此外,指望迭计是元素序列,而不是(键,值)对的序列。
处理Counter对象的经常使用模式:
#全部计数的总和
#重置全部计数
#列出独特元素
#转换为一个集合
#转换为常规字典
#转换为(elem,cnt)对列表
#从(elem,cnt)对列表中进行转换
#n最小公共元素
#删除零和负数
提供了几个数学运算,用于组合Counter对象以生成多个集合(计数器的计数大于零)。
加法和减法经过添加或减去相应元素的计数来组合计数器。
交集和并集返回相应计数的最小值和最大值。
每一个操做均可以接受带符号计数的输入,但输出将排除计数为零或更小的结果。
一元加法和减法是添加空白计数器 或 从空白计数器中减去 的快捷方式。
3.3版新增:增长了对一元加号,一元减号和就地多重操做的支持。
注意:
计数器主要用于处理正整数来表示运行计数;可是,注意不要没必要要地排除须要其余类型或负值的用例。
为了帮助解决这些用例,本节介绍了最小范围和类型限制。
(1)Counter类自己是一个字典子类,其键和值没有限制。这些值旨在表示计数,但您能够在值字段中存储任何内容。
(2)most_common( )方法只要求值是可计数的。
(3)对于诸如 c[key] += 1的就地操做,值类型只须要支持加法和减法。因此分数、浮点数和小数将会起做用,而且负值被支持。
update( )和subtract( ) 也是如此,它们容许输入和输出的负值和零值的状况。
(4)multiset方法仅用于具备正值的用例。输入可能为负值或零,但仅建立具备正值的输出。没有类型限制,但值类型须要支持加法,减法和比较。
(5)elements( )方法须要整数计数。它忽略零和负数。