【转载】Python中collection.Counter的用法
目录
前言
正文
初始化Counter对象的方法
关于在Counter对象中计数为0的情况
Counter对象支持的方法
elements()
most_common([n])
subtract([iterable-or-mapping])
update([iterable-or-mapping])
Counter对象的常见操作
总结
前言
首先Counter
这个工具能够用来让我们快速便捷的对某些对象做一些统计操作,包括可迭代对象iterable
和映射对象mappings
。
正文
语法:collections.Counter([iterable-or-mapping])
初始化Counter对象的方法
# 1、创建一个空的Counter对象
from collections import Counter
c = Counter()
print(c)# 结果显示:
Counter() # 2、使用可迭代对象初始化Counter对象
c = Counter('gallahad')
print(c)# 结果显示:
Counter({'a': 3, 'l': 2, 'g': 1, 'h': 1, 'd': 1}) # 3、使用映射对象初始化Counter对象
c = Counter({'red': 4, 'blue': 2})
print(c)# 结果显示:
Counter({'red': 4, 'blue': 2}) # 4、使用关键字参数初始化Counter对象
c = Counter(cats=4, dogs=8)
print(c)# 结果显示:
Counter({'dogs': 8, 'cats': 4})
关于在Counter对象中计数为0的情况
获取Counter对象中不存在的元素的值value
,不会报错KeyError
,而是返回0
:
c = Counter(['eggs', 'ham'])
print(c['bacon']) # 结果显示:
0
同理:如果给Counter
对象中的某个元素赋值为0
,并不意味着这个元素被删除了,如果想删除Counter
中的某个元素,使用del
:
c['sausage'] = 0
print(c) # 显示结果:
Counter({'eggs': 1, 'ham': 1, 'sausage': 0}) del c['sausage']
print(c) # 显示结果:
Counter({'eggs': 1, 'ham': 1})
Counter对象支持的方法
elements()
这个方法返回一个迭代器,这个迭代器包含了Couter
对象包含的所有元素,并以它们的计数来决定它们在这个迭代器中出现多少次,而且元素的顺序是随机的。特别地,如果元素的计数小于1
,那么elements()
方法会忽略这个元素:
c = Counter(a=4, b=2, c=0, d=-2)
print(sorted(c.elements())) # 结果显示:
['a', 'a', 'a', 'a', 'b', 'b']
most_common([n])
这个方法返回一个列表,里面的元素都是以元组的形式存在,元组里的元素分别是原先Counter对象中的键值对,并且是按照元素的值的大小来决定它们的顺序(默认从大到小)。如果在使用时传入了参数n,那么返回的结果是选取列表中的前n个元素,如果没有传入参数或者传入的参数为0,那么默认是返回所有的元素。如果有多个元素的值相同,那么它们之间的顺序是随机的:
print(Counter('abracadabra').most_common(3)) # 结果显示:
[('a', 5), ('b', 2), ('r', 2)]
subtract([iterable-or-mapping])
这个方法返回的还是一个Counter
对象,结果是用方法的调用者Counter
对象里面元素的个数减去对应的另外一个Counter
对象中元素的个数得到的差,为新的Counter
对象中元素的值value
。
c = Counter(a=4, b=2, c=0, d=-2)
d = Counter(a=1, b=2, c=3, d=4, e=5)
c.subtract(d)
print(c) # 结果显示:
Counter({'a': 3, 'b': 0, 'c': -3, 'e': -5, 'd': -6})
update([iterable-or-mapping])
这个方法类似于字典的update()方法,对于原来的Counter对象中没有的元素,则将此元素和它对应的计数添加进来,已有的元素则只是在原来的计数上加上此元素的计数:
c = Counter(a=4, b=2, c=0, d=-2)
d = Counter(a=1, b=2, c=3, d=4, e=5)
c.update(d)
print(c) # 结果显示:
Counter({'a': 5, 'e': 5, 'b': 4, 'c': 3, 'd': 2})
Counter对象的常见操作
sum(c.values()) # 统计所有元素的个数
c.clear() # 清空Counter对象里面的所有元素
list(c) # 以列表的形式展现Counter对象的所有键key
set(c) # 以集合的形式展现Counter对象的所有键key
dict(c) # 将Counter对象转换成字典
c.items() # 转换成包含类似(elem, cnt)元素的列表
Counter(dict(list_of_pairs)) # 将一个包含类似(elem, cnt)元素的列表转换成Counter对象
c.most_common()[:-n-1:-1] # 找出数量最少的n个元素
+c # 将数量为0或负数的键值对给移除
-c # 将数量为0或正数的键值对给移除,并将数量为负数的元素变成整数
Counter对象的类似集合的操作
>>> c = Counter(a=3, b=1)
>>> d = Counter(a=1, b=2)
>>> c + d # 相同元素数量相加,没有的则作为新的元素
Counter({'a': 4, 'b': 3})
>>> c - d # 相减,只保留最后value值为正的元素
Counter({'a': 2})
>>> c & d # 相交,只保留相同的元素和最小的value值
Counter({'a': 1, 'b': 1})
>>> c | d # 合并,保留相同元素和最大的value值,包含不相同的元素
Counter({'a': 3, 'b': 2})
总结
【转载】Python中collection.Counter的用法相关推荐
- [转载] python中string函数的用法_python中string模块各属性以及函数的用法
参考链接: Python中的string.octdigits 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作. python的字符 ...
- python中collection.Counter and和的区别
1.collection.Counter输出的是字典,num+value,在数组中数字的种类以及出现的次数 2.and和&的区别 &, |表示位运算, and,or则依据是否非0来决定 ...
- [转载] Python中Numpy包的用法
参考链接: Python中的Numpy.prod 一.数组方法 创建数组:arange()创建一维数组:array()创建一维或多维数组,其参数是类似于数组的对象,如列表等 反过来转换则可以使用num ...
- [转载] python中元组(tuple)用法总结
参考链接: Python | tuple函数 一.tuple也是一个class,是不可变的list类型,不可以增删改. 创建: tup1 = ('physics', 'chemistry', 1997 ...
- [转载] python中append函数的用法
参考链接: Python list append() append函数会在数组后加上相应的元素 例: a=[1,2,3] a.append(5) 此时,运行结果为 [1, 2, 3, 5] a=[1, ...
- python中的counter()、elements()、most_common()和subtract()函数的用法
python中的counter().elements().most_common()和subtract()函数的用法 counter()方法: class collections.Counter([i ...
- python中index函数_详解python中的index函数用法
1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 de ...
- python中index方法详解_详解python中的index函数用法
1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 de ...
- python中global和nonlocal用法的详细说明
1.前言 第一,两者的功能不同.global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数 ...
最新文章
- B站资源推荐:复旦大学机器学习、深度学习公开课,附PDF课件下载
- 支付宝支付 订单参数异常,请重新下单后再发起付款
- 如何使用Axure高效完成高保真原型
- 对文本根据特殊字符进行分段代码_如何优雅地配置快应用的代码片段
- MongoDB数据库(3.mongodb数据库的高级查询)
- 《Reids 设计与实现》第七章 RDB 持久化
- ubuntu 下的文件搜索
- 联想进入bios修复计算机,联想笔记本安装win10后开启界面一直是自动修复,进不了BIOS重装系统...
- 对List中的对象的模糊查询
- 扁平化设计与质感设计: 他们有什么不同?
- 设计模式17-门面模式
- 伦敦备受青睐的标志性建筑——皇家阿尔伯特音乐厅
- 解决word在输入文字后公式自动矮的问题,同时实现公式自动居中,编号居右
- C++课程--设计设计思想、方法与模式(李建忠老师)
- 程序员团队名称和口号_这50个团建活动的口号,你曾经叫过几次呢?
- php 银行支付通道_PHP银联在线支付接口的开发实例
- 鄂汇办服务器处理用户信息失败,登录交管网显示获取用户信息失败
- 28 python pandas 摘选考勤生成考勤日历表
- 乙酰六肽-49/Delisens/Acetyl Hexapeptide-49
- 国在产vr视频区_九台vr技术安全体验馆VR行走平台资讯
热门文章
- 1001:Hello,World! 【信息学奥赛一本通(C++版)在线评测系统】
- 为什么安装了cmpp没法拖到工具栏_软件SU:简介、安装以及设置
- python 操作excel 教程_Python学习笔记(十六)—Python操作Excel
- 学习OpenVINO笔记之Inference Engine
- HashMap底层理解(上)
- 资源:网页翻译API(文档)
- mui栅格布局的两种方式(grid和list,宫格和列表)
- 免费开源B2C电商系统:(ShopXO无需授权,即可商用)- 入门篇
- jsp点选框_Jsp单选框
- 电脑编程python和c加加语言的区别_小猿圈之Bash 和 Python 编程语言优缺点