简单掌握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深入学习之闭包
Aug 31 Python
python批量修改文件名的实现代码
Sep 01 Python
Python中关于Sequence切片的下标问题详解
Jun 15 Python
Python处理文本换行符实例代码
Feb 03 Python
Windows下安装Scrapy
Oct 17 Python
python中的数据结构比较
May 13 Python
8种用Python实现线性回归的方法对比详解
Jul 10 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
Python Subprocess模块原理及实例
Aug 26 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
python执行js代码的方法
May 13 Python
pandas中DataFrame重置索引的几种方法
May 24 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
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
JQuery 风格的HTML文本转义
2009/07/01 Javascript
基于datagrid框架的查询
2013/04/08 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
js代码实现下拉菜单【推荐】
2016/12/15 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
详解vue-cli3使用
2018/08/14 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
JS实现简单的表格增删
2020/01/16 Javascript
Python文件读取的3种方法及路径转义
2015/06/21 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
python导入坐标点的具体操作
2019/05/10 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
基于Python实现扑克牌面试题
2019/12/11 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
python time.strptime格式化实例详解
2021/02/03 Python
轻松掌握CSS3中的字体大小单位rem的使用方法
2016/05/24 HTML / CSS
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
J2EE系统只能是基于web
2015/09/08 面试题
求职简历的自我评价
2014/01/31 职场文书
运动会邀请函范文
2014/01/31 职场文书
护士的自我鉴定
2014/02/07 职场文书
趣味体育活动方案
2014/02/08 职场文书
信用卡工资证明范本
2015/06/19 职场文书
详解MySQL的Seconds_Behind_Master
2021/05/18 MySQL
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技
Python数据处理的三个实用技巧分享
2022/04/01 Python
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL