简单掌握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开发vim插件及心得分享
Nov 04 Python
python实现Windows电脑定时关机
Jun 20 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
python的turtle库使用详解
May 10 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
Dec 09 Python
python3 webp转gif格式的实现示例
Dec 10 Python
django 取消csrf限制的实例
Mar 13 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
Python使用socket模块实现简单tcp通信
Aug 18 Python
python实现邮件循环自动发件功能
Sep 11 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 15 Python
python海龟绘图之画国旗实例代码
Nov 11 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
网站当前的在线人数
2006/10/09 PHP
php网页后退不再出现过期
2007/03/08 PHP
php下使用strpos需要注意 === 运算符
2010/07/17 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
简明json介绍
2008/09/28 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
Python urlopen()函数 示例分享
2014/06/12 Python
Django自定义分页与bootstrap分页结合
2021/02/22 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
银行简历自我评价
2014/02/11 职场文书
总账会计岗位职责
2014/03/13 职场文书
理财学专业自荐书
2014/06/28 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
Vue实现动态查询规则生成组件
2021/05/27 Vue.js
Django使用redis配置缓存的方法
2021/06/01 Redis
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js
python中使用redis用法详解
2022/12/24 Redis