我是靠谱客的博主 默默悟空,最近开发中收集的这篇文章主要介绍python中collections中的counter类_Python标准库--collections模块的Counter类,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近发现Python标准库自带的工具类十分方便,特别是这个collections容器模块,可以用来代替Python的list、tuple、dict、set,而且还提供了更多有用的功能。在collections模块中分别有6个常用的类/函数和3个包装类,这6个常用的类/函数分别是namedtuple(),deque,ChainMap,Counter,OrderedDict,defaultdict。注:namedtuple()是一个工厂函数,创建的是tuple的子类。

今天就把学习过的计数器Counter类给大家介绍一下,Counter工具能提供快速而且方便的计数功能,如下代码演示了计数的基础操作

>>> cnt = Counter()

>>> for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:

cnt[word] += 1

>>> cnt

Counter({'blue': 3, 'red': 2, 'green': 1})

一个 Counter 对象是一个 dict 的子类,用来统计可哈希对象的数量,创建 Counter 的元素可以是可迭代对象或者是一个映射,如下代码展示了如何创建一个 Counter

>>> c = Counter() # 创建了一个空的Counter对象

>>> c = Counter('gallahad') # 用可迭代对象创建了一个Counter对象

>>> c = Counter({'red': 4, 'blue': 2}) # 用映射来创建一个Counter

>>> c = Counter(cats=4, dogs=8) #用关键字参数创建Counter

返回Couneter对象的所有元素可以使用elements(),由于Counter对象中的的元素是无序的,所以该方法返回的迭代器也是无序的。

>>> c = Counter(a=4, b=2, c=0, d=-2)

>>> sorted(c.elements())

['a', 'a', 'a', 'a', 'b', 'b']

most_common(n)是个返回n个最常见元素和它的计数的函数,如果n被省略或者为None,则返回所有的元素和它的计数。

>>> Counter('abracadabra').most_common(3)

[('a', 5), ('r', 2), ('b', 2)]

两个Counter可以使用subtract()来相减,但这样之后的结果可能使得计数为0或者负数,例如下面的代码演示了成为负数的情况

>>> 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})

另外,Counter也可以利用dict的所有方法来进行运算,例如可以使用items()来返回所有的键值对,使用dict()将它转换为一个字典,用clear()来清空一个Counter。

Counter还支持几个数学运算,包括加法和减法,交集和并集。这里交集和并集返回的是对应计数的最小值和最大值。这四个运算可以接受带符号的计数值,但是与substract()不同的是,输出只包括计数值大于0的键值对。

>>> c = Counter(a=3, b=1)

>>> d = Counter(a=1, b=2)

>>> c + d # add two counters together: c[x] + d[x]

Counter({'a': 4, 'b': 3})

>>> c - d # subtract (keeping only positive counts)

Counter({'a': 2})

>>> c & d # intersection: min(c[x], d[x])

Counter({'a': 1, 'b': 1})

>>> c | d # union: max(c[x], d[x])

Counter({'a': 3, 'b': 2})

而使用一元运算便是将相当于在运算符的前面加了一个空的Counter对象那个。

>>> c = Counter(a=2, b=-4)

>>> +c

Counter({'a': 2})

>>> -c

Counter({'b': 4})

总之,在Python中做一个简单的计数器使用Counter是非常方便的,每次需要一些集合操作的时候就可以在collections中来思考思考。

欢迎大家关注公众号“计算机视觉与机器学习”

最后

以上就是默默悟空为你收集整理的python中collections中的counter类_Python标准库--collections模块的Counter类的全部内容,希望文章能够帮你解决python中collections中的counter类_Python标准库--collections模块的Counter类所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部