python中collections中的counter类_了解Python的collections.Counter类型
python视频教程栏目介绍Python的collections.Counter类型。
collections.Counter 类型可以用来给可散列的对象计数,或者是当成多重集合来使用 —— 多重集合就是集合里的元素可以出现多次1。
collections.Counter 类型类似于其它编程语言中的 bags或者 multisets2。
(1)基本用法counter = collections.Counter(['生物', '印记', '考古学家', '生物', '枣', '印记'])
logging.info('counter -> %s', counter)
counter.update(['化石', '果实', '枣', '生物'])
logging.info('counter -> %s', counter)
most = counter.most_common(2)
logging.info('most -> %s', most)
运行结果:INFO - counter -> Counter({'生物': 2, '印记': 2, '考古学家': 1, '枣': 1})
INFO - counter -> Counter({'生物': 3, '印记': 2, '枣': 2, '考古学家': 1, '化石': 1, '果实': 1})
INFO - most -> [('生物', 3), ('印记', 2)]
示例程序中,首先使用 collections.Counter() 初始化 counter 对象,这时 counter 对象中就已经计算好当前的词语出现次数;collections.Counter()入参为可迭代对象,比如这里的列表。接着使用 update() 方法传入新词语列表,这时 counter 对象会更新计数器,进行累加计算;最后使用 counter 对象的 most_common() 方法打印出次数排名在前 2 名的词语列表。
(2)集合运算
collections.Counter 类型还支持集合运算。a = collections.Counter({'老虎': 3, '山羊': 1})
b = collections.Counter({'老虎': 1, '山羊': 3})
logging.info('a -> %s', a)
logging.info('b -> %s', b)
logging.info('a+b -> %s', a + b)
logging.info('a-b -> %s', a - b)
logging.info('a&b -> %s', a & b)
logging.info('a|b -> %s', a | b)
运行结果:INFO - a -> Counter({'老虎': 3, '兔子': 2, '山羊': 1})
INFO - b -> Counter({'山羊': 3, '老虎': 1})
INFO - a+b -> Counter({'老虎': 4, '山羊': 4, '兔子': 2})
INFO - a-b -> Counter({'老虎': 2, '兔子': 2})
INFO - a&b -> Counter({'老虎': 1, '山羊': 1})
INFO - a|b -> Counter({'老虎': 3, '山羊': 3, '兔子': 2})示例中的 a 与 b 都是 Counter 类型对象。这里还演示了 Counter 对象可以使用键值对的方式进行初始化操作;
a+b 表示并集操作,包含所有元素;
a-b 表示差集操作;
a&b 表示交集操作;
a|b 比较特殊,首先把所有的键囊括进来,然后比较两个对象中的对应键的最大值,作为新对象的值。比如 a 对象中有 '老虎': 3,b 对象中有 '老虎': 1,那么最后得到的对象是 '老虎': 3。
(3)正负值计数
Counter 类型中的计数器还支持负值。c = collections.Counter(x=1, y=-1)
logging.info('+c -> %s', +c)
logging.info('-c -> %s', -c)
运行结果:INFO - +c -> Counter({'x': 1})
INFO - -c -> Counter({'y': 1})
通过简单的 +/- 作为 Counter 类型对象的前缀,就可以实现正负计数过滤。Python 的这一设计很优雅。相关免费学习推荐:python视频教程
python中collections中的counter类_了解Python的collections.Counter类型相关推荐
- python什么时候用函数和类_【Python】一文说清楚类与函数的选择
前两天一位已经学习python一段时间的小伙伴问了这样一个问题:虽然已经使用python一年多了,也用python写过很多脚本,代码量从几十行到上千行的也有,但是从未使用过类(class),似乎用函数 ...
- 在python中定义类时、运算符重载_自定义 Python 类中的运算符和函数重载(上)...
如果你对 Python 中的str对象使用过 + 或 * 运算符,你一定注意到了它的操作与 int 或 float 类型的区别: 你可能想知道同一内置运算符或函数如何对不同类对象进行不同操作的.这分别 ...
- python出现的次数最多的元素_【Python 秘籍】序列中出现次数最多的元素
问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案. ...
- python中对象和变量的关系_浅析python中的类变量和对象变量
刚学python,学到了有关于类和对象的地方.对一个概念有点模糊,后来通过实践编码找到一定规律 在python中 class test(object): id=2 name='tt' list=['t ...
- python中format函数用法简书_从Python安装到语法基础,这才是初学者都能懂的爬虫教程...
Python和PyCharm的安装:学会Python和PyCharm的安装方法 变量和字符串:学会使用变量和字符串的基本用法 函数与控制语句:学会Python循环.判断语句.循环语句和函数的使用 Py ...
- 在python中print表示的数据类型是_【Python连载】那些必须掌握的Python数据类型
原标题:[Python连载]那些必须掌握的Python数据类型 经过近几年的发展,Python已成为了数据科学和机器学习的首选语言,许多人也因此开始走上自学python之路.从今天开始,本公众号将陆续 ...
- python动态更新窗口上的图片_基于Python实现matplotlib中动态更新图片(交互式绘图)...
最近在研究动态障碍物避障算法,在Python语言进行算法仿真时需要实时显示障碍物和运动物的当前位置和轨迹,利用Anaconda的Python打包集合,在Spyder中使用Python3.5语言和mat ...
- python比较excel表格内容并提取_利用python提取多张excel表数据并汇总到同一张新表中...
接上篇文章<如何用python实现excel中的vlookup功能?>,上篇说到,最近我在做一个小项目,也是用python操作excel解决财务审计工作上的一些问题,以便提高工作效率及其准 ...
- python如何输入多行数据合并_关于Python中的合并字典,这些问题必须搞清楚!
全文共1474字,预计学习时长6分钟 图源:unsplash Python 3.9现在处于初始开发阶段,但其中让人惊喜的新功能可不少.其中一个是颠覆性的,它能使处理Python字典时编写的代码更具可读 ...
最新文章
- MultiThreadedHttpConnectionManager
- Linux 初始化之 Systemd机制
- 数据结构和算法之数组模拟队列
- oracle 10g 学习之函数和存储过程(12)
- 《Oracle高性能自动化运维》一一第1章 Linux下的Oracle
- 最详细的 Spring Boot 多模块开发与排坑指南
- S3C2440之MMU
- win10系统电脑c盘哪些文件可以删除,c盘可以删除的文件有哪些
- 使用pygal.maps.world库读取JSON格式文件,显示世界人口地图图示
- STM32F103 mbed输出互补pwm
- Java 爬虫系列丨(一)爬虫介绍
- 因子分析在SPSS中的应用
- VLAN 虚拟局域网 搭建
- Eclipse SVN:E200030:There are unfinished transactions detected
- python实现商品管理系统_商品管理系统(示例代码)
- 阿里云虚拟主机项目根目录指向public目录下
- 【云原生 | Kubernetes 实战】01、K8s-v1.25集群搭建和部署基于网页的 K8s 用户界面 Dashboard
- Tomcat 的下载与安装教程
- 高等教育心理学:学生的认知发展
- 北京电台“广播三下乡” 徐德亮演唱传统曲艺
热门文章
- win8系统电脑中病毒了怎么办,如何解决win8电脑中毒
- 重定向linux编译,linux重定向 - 悟性的个人页面 - OSCHINA - 中文开源技术交流社区...
- vba 添加outlook 签名_利用VBA发送附件电子邮件
- vivado 亚稳态_VIVADO时序约束及STA基础
- 麦克纳姆轮全向移动机器人纵向直线运动分析
- android dao设计模式,DAO设计模式
- kali linux卸载lnmp,kali linux 如何安装lnmp 1.2
- 中心频点计算公式_LTE网各频段中心频点的计算方法_刘20170105
- 2037. 使每位学生都有座位的最少移动次数
- 结构体05:结构体做函数参数