博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python中的collections.Counter模块
阅读量:4116 次
发布时间:2019-05-25

本文共 2607 字,大约阅读时间需要 8 分钟。

1.collections模块介绍:

collections是Python内建的一个集合模块,提供了许多有用的集合类。该模块实现了专门的容器数据类型,提供了Python的通用内置容器,dict,list,set和tuple的替代方法。

在这里插入图片描述

2.counter类

官网参考:

Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。

Counter类创建方式有以下几种:

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

>>> c = Counter()                           # 创建一个Counter类>>> c = Counter('gallahad')                 # 创建一个可迭代对象>>> c = Counter({'red': 4, 'blue': 2})      # 创建一个字典对象>>> c = Counter(cats=4, dogs=8)             # 从键值对创建

对于counter类里边没有的元素,将返回 0

>>> c = Counter(['eggs', 'ham'])     >>> c['bacon']  0
>>> c['eggs'] 1

del 删除键

当计数值为0时,并不意味着元素被删除,删除元素应当使用

>>> c['sausage'] = 0                     >>> del c['sausage']                     >> c0

elements()

在元素上返回一个迭代器,重复每个元素的次数。 元素以任意顺序返回。 如果元素的计数小于1,则elements()将忽略它。

>>> 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,则most_common()返回计数器中的所有元素。 具有相同计数的元素是任意排序的:

>>> Counter('abracadabra')Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})>>> Counter('abracadabra').most_common(3)[('a', 5), ('b', 2), ('r', 2)]

subtract() 与 update()

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

>>> c = Counter(a=4, b=2, c=0, d=-2)>>> d = Counter(a=1, b=2, c=3, d=4)>>> c.subtract(d)>>> cCounter({'a': 3, 'b': 0, 'c': -3, 'd': -6})
>>> c = Counter(a=4, b=2, c=0, d=-2)>>> d = Counter(a=1, b=2, c=3, d=4)>>> c.update(d)>>> cCounter({'a': 5, 'b': 4, 'c': 3, 'd': 2})

Counter对象的常见模式:

sum(c.values())                 # 计算所有values 的总数c.clear()                       # 重置 countslist(c)                         # 将c 中的键转换为列表set(c)                          # 将c 中的键转换为集合dict(c)                         # 将c 中的键值转换为字典,c为counterc.items()                       # 将c 中的键值转换为(elem, cnt),与字典中使用items() 相同Counter(dict(list_of_pairs))    # 将 (elem, cnt) 转换为Counter对象c.most_common()[:-n-1:-1]       # 倒着打印(n-1)元素,即打印(n-1)最不常见的元素+c                              # 去除0或values为负的counter-c                              # 去除0和values为正的counter,并将负的values转换为正的values

counter 对象的数学运算

提供了几个数学运算来组合 Counter 对象以生成多个集合(计数大于零的Counter )。 加法和减法通过添加或减去相应元素的计数来组合计数器。 交集和并集返回相应计数的最小值和最大值。 每个操作都可以接受带有符号计数的输入,但输出将删除 Counter 小于1的结果。

>>> c = Counter(a=3, b=1)>>> d = Counter(a=1, b=2)>>> c + d                       # 两个counter 对应相加Counter({'a': 4, 'b': 3})>>> c - d                       # 减法只保留正数Counter({'a': 2})>>> c & d                       # 交集,返回计数的最小的值 min(c[x], d[x])Counter({'a': 1, 'b': 1})>>> c | d                       # 并集,返回计数的最大的值 max(c[x], d[x])Counter({'a': 3, 'b': 2})

转载地址:http://opwpi.baihongyu.com/

你可能感兴趣的文章
PHP 7 的五大新特性
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
OpenCV meanshift目标跟踪总结
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
听说玩这些游戏能提升编程能力?
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
Mysql复制表以及复制数据库
查看>>
Kafka
查看>>
9.1 为我们的角色划分权限
查看>>
维吉尼亚之加解密及破解
查看>>
TCP/IP协议三次握手与四次握手流程解析
查看>>
PHP 扩展开发 : 编写一个hello world !
查看>>
inet_ntoa、 inet_aton、inet_addr
查看>>
用模板写单链表
查看>>
链表各类操作详解
查看>>
C++实现 简单 单链表
查看>>