简单掌握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实现的解析crontab配置文件代码
Jun 30 Python
简单介绍Python中的readline()方法的使用
May 24 Python
python 计算文件的md5值实例
Jan 13 Python
Python和Java进行DES加密和解密的实例
Jan 09 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
Django框架登录加上验证码校验实现验证功能示例
May 23 Python
python将类似json的数据存储到MySQL中的实例
Jul 12 Python
python时间与Unix时间戳相互转换方法详解
Feb 13 Python
Python双链表原理与实现方法详解
Feb 22 Python
Python闭包及装饰器运行原理解析
Jun 17 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 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
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
非常好用的Zend Framework分页类
2014/06/25 PHP
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
Yii中srbac权限扩展模块工作原理与用法分析
2016/07/14 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
2020/08/24 PHP
List the Codec Files on a Computer
2007/06/18 Javascript
[原创]用javascript实现检测指定目录是否存在的方法
2008/01/12 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
vue.js实现照片放大功能
2020/06/23 Javascript
python分析apache访问日志脚本分享
2015/02/26 Python
python爬取哈尔滨天气信息
2018/07/14 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
2019/09/25 Python
Python多线程及其基本使用方法实例分析
2019/10/29 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
html5 button autofocus 属性介绍及应用
2013/01/04 HTML / CSS
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
大学生最新职业生涯规划书范文
2014/01/12 职场文书
人力资源总监工作说明
2014/03/03 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
2015中学学校工作总结
2015/07/20 职场文书
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫
DIY胆机必读:各国电子管评价
2022/04/06 无线电