6. python Collections -- Counter objects

外语不好,机翻勿喷,方便回顾 (逃~

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

image.png


详细用法:

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

Counter是用于计算可哈希对象的字典子类。

它是一个无序的集合,其元素以字典键的形式存储,并将其计数存储为字典值。

计数允许为包括零或负计数的任何整数值。

Counter类与其他语言的bag或multisets类似。

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


image.png

翻译~:

一个新的空的计数器

一个来自迭代器的新计数器

映射中的新计数器

一个来自关键字args的新计数器


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

image.png

#缺少元素的数量为零


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

image.png


Counter对象支持超出所有字典可用的三种方法:


elements()

将元素返回到一个迭代器,每次重复的次数与它的次数相同。

元素以任意顺序返回。

如果一个元素的数量少于一个,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

3.2版本中的新功能

通常的字典方法可用于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版新增功能:增加了对一元加号,一元减号和就地多重集操作的支持。



注意:

    计数器主要用于使用正整数来表示运行计数;但是,注意不要不必要地排除需要其他类型或负值的用例。为了帮助解决这些用例,本节介绍了最小范围和类型限制。

    Counter类本身是一个字典子类,对其键和值没有限制。这些值旨在表示计数的数字,但您可以在值字段中存储任何内容。

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

    对于就地操作,例如c [key] + = 1,值类型只需要支持加法和减法。所以分数,浮点数和小数将会起作用并且负值被支持。

    update()和subtract()同样适用于输入和输出都允许负值和零值的情况。

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

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


猜你喜欢

转载自blog.51cto.com/286577399/2128656