python counter_教你Python的collections.Counter类型

collections.Counter 类型可以用来给可散列的对象计数,或者是当成多重集合来使用 —— 多重集合就是集合里的元素可以出现多次1。

collections.Counter 类型类似于其它编程语言中的 bags 或者 multisets2。

09810972249f7db4257ee15c1246d904.png

(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 名的词语列表。

22dc17ad925ca8d2c7b150279aee49e8.png

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

2515eee2804b14b086ac79c1fc1a4f4e.png

通过简单的 +/- 作为 Counter 类型对象的前缀,就可以实现正负计数过滤。Python 的这一设计很优雅。

最后多说一句,小编是一名python开发工程师,这里有我自己整理的整套python学习资料和路线,想要这些资料的都可以关注小编,并私信“01”领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为云classroom应用_华为任正非:将来所有应用都会长在云土地上,但现在还不是...

IT之家1月1日消息 昨日,华为心声社区公开了任正非 11 月 4 日在企业业务及云业务汇报会上的讲话。任正非表示,将来所有应用都会长在云土地上,但现在还不是,如何建成 “黑土地”是华为努力的任务,应一步一步来。IT之家了…

java不同进程的相互唤醒_Java线程生命周期与状态切换

前提最近有点懒散,没什么比较有深度的产出。刚好想重新研读一下JUC线程池的源码实现,在此之前先深入了解一下Java中的线程实现,包括线程的生命周期、状态切换以及线程的上下文切换等等。编写本文的时候,使用的JDK版本是11。Java线…

32查运行内存的map文件_linux内存管理

概念先行先理解内存管理中的几个概念:内存,主存,缓存,外存,虚拟内存,物理内存,虚拟地址,物理地址外存:计算机的外部存储,比如硬盘(机械硬盘、固态硬盘、混合硬盘)&#x…

react usecontext_鬼才!我居然把 Vue3 的原理用到了 React 上?

前言vue-next是Vue3的源码仓库,Vue3采用lerna做package的划分,而响应式能力vue/reactivity被划分到了单独的一个package中。如果我们想把它集成到React中,可行吗?来试一试吧。使用示例话不多说,先看看怎么用的解解馋吧…

微信多开txt_在电脑上怎么实现微信多开的效果

现在越来越多的年轻人在电脑办公的时候,不止有一个微信号,由于工作、家庭等各方面因素,想自己能在一个电脑上打开多个微信怎么办?下面小编就把自己的所学分享给大家一.首先在电脑桌面上新建一个txt文本文件,把这个文档…

vue slot scope使用_20、slot插槽的用法

重点:单个插槽、具名插槽、作用域插槽的用法;访问插槽的方法。其实本小白对插槽理解的还不深,哪些场景会经常用到插槽也不了解。但是本着“大胆猜测”的理念,我的猜测如下:假设有 父组件A,有 子组件B、子组…

python工作目录_如何使用python 3获取当前工作目录?

When I run the following script in IDLE import os print(os.getcwd()) I get output as D:\testtool but when I run from cmd prompt, I get c:\Python33>python D:\testtool\current_dir.py c:\Python33 How do I get same result which I got using IDLE ? 解决方案 …

flutter刷新页面_用Flutter实现58App的首页

背景Flutter作为全新跨平台应用框架,在页面渲染和MD开发上优势明显,可谓是业界一枝独秀。正好最近有这样的一个机会学习Flutter开发,我们便尝试用它开发一个MD风格的较复杂页面,来比较跟原生应用开发的优势。也是想通过对新框架的…

python调用报表制作工具_使用Python轻松制作漂亮的表格

Python太有用而且很方便 图表可以用matplotlib轻松制作,数值计算只要有numpy就行。 最近,Python被广泛用于机器学习系统的研究,甚至还能制作游戏。 我突然想知道:“是否可以用Python来制作图表而不是表格?” 这个时候&…

小米网关控制空调伴侣_小爱同学怎么控制灯?

说说我们神奇小爱同学吧,小爱同学是小米旗下的一款智能AI音箱,会根据您的指令来操作电器设备,比如说开关灯,那么小爱同学怎么控制灯?如果家里的是传统的灯泡,不是智能灯连接还能控制吗?今天蜜罐…

bochs上网镜像怎么上网_【干货科普】上网慢!经常掉线!怎么办?

文章来源:鲜枣课堂(ID:xzclasscom)作为也算是懂点技术的半专业人士,我们放假回去,遇到亲友,很可能被问到这样的问题——“我的手机(电脑)上网经常掉线,是为什么?”“我的手机(电脑)上网总是很慢…

sql 中位数_【PL/SQL 自定义函数】 常用场景

看完这章后你会学习到以下内容:1.练习场景2.面试场景3.工作应用场景总览思维导图:面试部分:1.创建函数,从emp表中查询指定员工编号的职工的工资CREATE OR REPLACE FUNCTION CHECK_SAL(F_EMPNO IN EMP.EMPNO%TYPE) RETURN NUMBER ISV_SAL VARC…

swift date 计算差_[Swift 设计模式] 适配器

更多内容,欢迎关注公众号:Swift花园喜欢文章?不如来个 ➕三连?关注专栏,关注我 将一个不兼容的对象转换成目标接口或者类,这是适配器模式的作用。下面这件东西是适配器模式在现实世界中最贴切的表达。 USB-…

委外订单_听听晚报-英特尔扩大芯片委外订单、苹果秋季或举行两场发布会

英特尔扩大芯片委外订单据外媒报道称,美国半导体厂商英特尔已与中国台湾芯片制造厂商台积电达成协议,明年开始采用后者7nm的优化版本6nm制程量产处理器或显卡,预估投片量将达到18万片。该消息发出后,资本市场反应剧烈,…

打开另外一个页面_如何在PDF页面中插入图片?

如何给PDF添加图片?有些时候为了丰富PDF的文档内容,需要添加一些图片,相比Word或PPT文档可以直接插入图片,而PDF的操作很多人可能并不熟悉,下面一起来看看如何在PDF文档中插入图片。关于PDF文档插入图片分为两种情况&a…

spring boot mybatis 整合_MyBatis学习:MyBatis和Spring整合

1. 整合的工程结构首先我们来看下整合之后的工程结构是什么样的。2. 配置文件在于spring整合之前,mybatis都是自己管理数据源的,然后sqlSessionFactory是我们自己去注入的,现在整合了,这些都要交给spring来管理了,来看…

python中缩进_python编程中的缩进是什么意思

Python最具特色的是用缩进来标明成块的代码。我下面以if选择结构来举例。if后面跟随条件,如果条件成立,则执行归属于if的一个代码块。 下面对比C语言来看一下if ( i > 0 ) { x 1; y 2; } 如果i > 0的话,我们将进行括号中所包括的两个…

返回后的数据处理_【掘金使用技巧2】掘金返回数据中时间的处理方法

掘金输出的时间数据处理方法掘金在为使用者提供数据时,有一类数据处理起来有些麻烦,这类数据就是时间数据。它们长这样:或者这样:查看一下它们的类型,发现有datetime,datetime64,Timestamp等等。这么多各种各样的类型&…

springboot jwt token前后端分离_为什么要 前后端分离 ?

作 者:互扯程序来 源:互扯程序广而告之:由于此订阅号换了个皮肤,系统自动取消了读者的公众号置顶。导致用户接受文章不及时。您可以打开订阅号,选择置顶(星标)公众号,重磅干货,第一时间送达&…

分计算iv值_一文读懂评分卡的IV、KS、AUC、GINI指标

前言:当一张评分卡构建完成时,筛选出一组特征生成了分数,我们会想要知道这个分数是否靠谱,即是否可以依赖这个分数将好坏客户区分开来,这个时候就需要评判评分卡有效性的指标。测量评分卡好坏区分能力的指标有许多&…