简单掌握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复制文件的方法实例详解
May 22 Python
python一键升级所有pip package的方法
Jan 16 Python
PyChar学习教程之自定义文件与代码模板详解
Jul 17 Python
Python2.X/Python3.X中urllib库区别讲解
Dec 19 Python
python通过elixir包操作mysql数据库实例代码
Jan 31 Python
python3.6+django2.0开发一套学员管理系统
Mar 03 Python
Python列表推导式与生成器用法分析
Aug 02 Python
使用python画社交网络图实例代码
Jul 10 Python
Python 获取 datax 执行结果保存到数据库的方法
Jul 11 Python
使用Python实现分别输出每个数组
Dec 06 Python
python zip,lambda,map函数代码实例
Apr 04 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 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取得字符串首字母的方法
2015/03/25 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
JS记录用户登录次数实现代码
2014/01/15 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
详解JavaScript函数
2015/12/01 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
js 奇葩技巧之隐藏代码
2017/08/11 Javascript
vue使用axios上传文件(FormData)的方法
2019/04/14 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
vue3.0 项目搭建和使用流程
2021/03/04 Vue.js
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
Python中内建模块collections如何使用
2020/05/27 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
浅析HTML5 Landmark
2020/09/11 HTML / CSS
Champion官网:美国冠军运动服装
2017/01/25 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
秋季运动会表扬稿
2014/01/16 职场文书
大学四年个人自我小结
2014/03/05 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书