简单掌握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中音频处理库pydub的使用教程
Jun 07 Python
简单实现Python爬取网络图片
Apr 01 Python
十分钟利用Python制作属于你自己的个性logo
May 07 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
Python continue继续循环用法总结
Jun 10 Python
python读取一个目录下所有txt里面的内容方法
Jun 23 Python
python 常用的基础函数
Jul 10 Python
python实现两张图片的像素融合
Feb 23 Python
基于wxPython的GUI实现输入对话框(2)
Feb 27 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
python plt.plot bar 如何设置绘图尺寸大小
Jun 01 Python
python单向链表实例详解
May 25 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 stripslashes和addslashes的区别
2014/02/03 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
php图片添加水印例子
2016/07/20 PHP
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
Javascript数组操作函数总结
2015/02/05 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python爬虫面试宝典(常见问题)
2018/03/02 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
Python PO设计模式的具体使用
2019/08/16 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
python db类用法说明
2020/07/07 Python
python实现数字炸弹游戏
2020/07/17 Python
Python: glob匹配文件的操作
2020/12/11 Python
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
英语自荐信常用语句
2013/12/13 职场文书
机械制造专业个人的自我评价
2013/12/28 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
会计出纳岗位职责
2015/03/31 职场文书
活动总结书怎么写
2015/05/11 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书