简单掌握Python的Collections模块中counter结构的用法


Posted in Python onJuly 07, 2016

counter 是一种特殊的字典,主要方便用来计数,key 是要计数的 item,value 保存的是个数。

from collections import Counter

>>> c = Counter('hello,world')
Counter({'l': 3, 'o': 2, 'e': 1, 'd': 1, 'h': 1, ',': 1, 'r': 1, 'w': 1})

初始化可以传入三种类型的参数:字典,其他 iterable 的数据类型,还有命名的参数对。

| __init__(self, iterable=None, **kwds)
 |  Create a new, empty Counter object. And if given, count elements
 |  from an input iterable. Or, initialize the count from another mapping
 |  of elements to their counts.
 |
 |  >>> c = Counter()       # a new, empty counter
 |  >>> c = Counter('gallahad')     # a new counter from an iterable
 |  >>> c = Counter({'a': 4, 'b': 2})   # a new counter from a mapping
 |  >>> c = Counter(a=4, b=2)     # a new counter from keyword args

默认请求下,访问不存在的 item,会返回 0。Counter 可以用来统计某些数据的出现次数,比如一个很长的数字串 numbers = "67642192097348921647512014651027586741512651" 中每个数字的频率:

>>> c = Counter(numbers) # c 存储了每个数字的频率
>>> c.most_common()  # 所有数字按照频率排序。如果 most_common 接受了 int 参数 n,将返回频率前n 的数据,否则会返回所有的数据
[('1', 8),
 ('2', 6),
 ('6', 6),
 ('5', 5),
 ('4', 5),
 ('7', 5),
 ('0', 3),
 ('9', 3),
 ('8', 2),
 ('3', 1)]

此外,你还可以对两个 Counter 对象进行 +, -,min, max 等操作。

综合示例:

print('Counter类型的应用') 
c = Counter("dengjingdong") 
#c = Counter({'n': 3, 'g': 3, 'd': 2, 'i': 1, 'o': 1, 'e': 1, 'j': 1}) 
print("原始数据:",c) 
print("最多的两个元素:",c.most_common(2))#输出数量最多的元素 
print("d的个数:",c['d'])#输出d的个数 
print(c.values())#输出字典的value列表 
print(sum(c.values()))#输出总字符数 
print(sorted(c.elements()))#将字典中的数据,按字典序排序 
print('\n\n') 
""" 
#删除所有d元素 
del c['d'] 
b = Counter("dengxiaoxiao") 
#通过subtract函数删除元素,元素个数可以变成负数。 
c.subtract(b) 
""" 
 
""" 
可以添加数据 
b = Counter("qinghuabeida") 
c.update(b) 
"""
Python 相关文章推荐
如何在Python中编写并发程序
Feb 27 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
Python实现的rsa加密算法详解
Jan 24 Python
Python实现的径向基(RBF)神经网络示例
Feb 06 Python
python+ffmpeg视频并发直播压力测试
Mar 06 Python
python分数表示方式和写法
Jun 26 Python
python 实现绘制整齐的表格
Nov 18 Python
tensorflow 自定义损失函数示例代码
Feb 05 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
python和c语言哪个更适合初学者
Jun 22 Python
python文件读取失败怎么处理
Jun 23 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
Python处理json字符串转化为字典的简单实现
Jul 07 #Python
全面了解python字符串和字典
Jul 07 #Python
对于Python中RawString的理解介绍
Jul 07 #Python
python变量不能以数字打头详解
Jul 06 #Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 #Python
详解Python中的array数组模块相关使用
Jul 05 #Python
简单掌握Python中glob模块查找文件路径的用法
Jul 05 #Python
You might like
DedeCMS dede_channeltype表字段注释
2010/04/07 PHP
PHP分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
javascript优先加载笔记代码
2008/09/30 Javascript
javascript cookies操作集合
2010/04/12 Javascript
关于COOKIE个数与大小的问题
2011/01/17 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
Three.js快速入门教程
2016/09/09 Javascript
Material(包括Material Icon)在Angular2中的使用详解
2018/02/11 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
浅谈一种让小程序支持JSX语法的新思路
2019/06/16 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
使用Vue生成动态表单
2019/11/26 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
django使用xlwt导出excel文件实例代码
2018/02/06 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
Python同时迭代多个序列的方法
2020/07/28 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
夜大毕业自我鉴定
2013/10/11 职场文书
高中教师评语大全
2014/04/25 职场文书
宣传普通话标语
2014/06/27 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
售房协议书范本
2015/08/11 职场文书
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis