【转载】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关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数 ...
最新文章
- 正则表达式调用“或”变量
- CTFshow 反序列化 web268
- python函数调用的三种方式_判断python对象是否可调用的三种方式及其区别
- PAT1043 输出PATest (20 分)
- html锚点反向联动,小程序菜单左右联动
- 深入比特币原理(五)——高级交易与脚本
- Base64编码简介及在java中的使用
- 将多个文件绑在一起执行
- apache支持.htaccess
- Visual Studio 2010 新建完项目编译就出错
- 计算机网络自顶向下第六章,计算机网络 自顶向下方法 第六章(英文版).ppt
- Windows下SVN提交模板制作及应用
- 2023年度流行色出炉终于轮到火龙果和草莓熊制霸天下了 优漫动游
- Ubuntu18.04运行校园网客户端
- elasticsearch 过期数据自动删除Java代码
- STI解读A:STI测量方法
- 怎么计算两个日期之间的差值
- 龙之谷服务器更新文件,全区全服 维护结束 更新至Ver.417
- CSS外部字体引入方式
- Win11设置鼠标箭头图案的方法教程
热门文章
- response 流和写能一起吗_余甘果蜂蜜能一起吃吗?余甘果泡蜂蜜有什么功效?
- AttributeError: ‘str‘ object has no attribute ‘copy
- C++/OpenCV:将数据保存到xml、yaml / 从xml、yaml读取数据
- [有限元]利用虚位移和虚力的定义、对称性推导弹性力学公式
- ieee latex 双栏_用Latex写学术论文: IEEE Latex模板和文档设置(\documentclass)
- js 判断一个字符在字符串中出现的次数 - 代码篇
- java for update 无效_java.sql.BatchUpdateException:调用中的无效参数
- 函数返回结构体指针_9.3 结构体指针
- jee-weapp是一套基于jfinal,dubbo微服务开发的微信小程序商城项目,首次开放全部拼团前后台源码
- 宝塔面板插件 sitemap生成器(附神马/百度主动推送)