python collections_6. python Collections -- Counter

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

语法:

classcollections.Counter([iterable-or-mapping])

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

计数允许为包括零或负计数的任何整数值。Counter类与其他语言的bag或multisets类似。

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

新的空的计数器

来自可迭代器的新计数器

来自映射的新计数器

来自关键字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( )方法需要整数计数。它忽略零和负数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值