利用Python找出序列中出现最多的元素示例代码


Posted in Python onDecember 08, 2017

前言

Python包含6种内置的序列:列表、元组、字符串 、Unicode字符串、buffer对象、xrange对象。在序列中的每个元素都有自己的编号。列表与元组的区别在于,列表是可以修改,而组元不可修改。理论上几乎所有情况下元组都可以用列表来代替。有个例外是但元组作为字典的键时,在这种情况下,因为键不可修改,所以就不能使用列表。

我们在一些统计工作或者分析过程中,有事会遇到要统计一个序列中出现最多次的元素,比如一段英文中,查询出现最多的词是什么,及每个词出现的次数。一遍的做法为,将每个此作为key,出现一次,value增加1。

例如:

morewords = ['why','are','you','not','looking','in','my','eyes']
for word in morewords:
 word_counts[word] += 1

collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案。

collections模块

collections模块自Python 2.4版本开始被引入,包含了dict、set、list、tuple以外的一些特殊的容器类型,分别是:

  • OrderedDict类:排序字典,是字典的子类。引入自2.7。
  • namedtuple()函数:命名元组,是一个工厂函数。引入自2.6。
  • Counter类:为hashable对象计数,是字典的子类。引入自2.7。
  • deque:双向队列。引入自2.4。
  • defaultdict:使用工厂函数创建字典,使不用考虑缺失的字典键。引入自2.5。

文档参见:http://docs.python.org/2/library/collections.html。

Counter类

Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。

为了演示,先假设你有一个单词列表并且想找出哪个单词出现频率最高。你可以这样做:

words = [
 'look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes',
 'the', 'eyes', 'the', 'eyes', 'the', 'eyes', 'not', 'around', 'the',
 'eyes', "don't", 'look', 'around', 'the', 'eyes', 'look', 'into',
 'my', 'eyes', "you're", 'under'
]
from collections import Counter
word_counts = Counter(words)
# 出现频率最高的3个单词
top_three = word_counts.most_common(3)
print(top_three)
# Outputs [('eyes', 8), ('the', 5), ('look', 4)]

另外collections.Counter还有一个比较高级的功能,支持数学算术符的相加相减。

>>> a = Counter(words)
>>> b = Counter(morewords)
>>> a
Counter({'eyes': 8, 'the': 5, 'look': 4, 'into': 3, 'my': 3, 'around': 2,
"you're": 1, "don't": 1, 'under': 1, 'not': 1})
>>> b
Counter({'eyes': 1, 'looking': 1, 'are': 1, 'in': 1, 'not': 1, 'you': 1,
'my': 1, 'why': 1})
>>> # Combine counts
>>> c = a + b
>>> c
Counter({'eyes': 9, 'the': 5, 'look': 4, 'my': 4, 'into': 3, 'not': 2,
'around': 2, "you're": 1, "don't": 1, 'in': 1, 'why': 1,
'looking': 1, 'are': 1, 'under': 1, 'you': 1})
>>> # Subtract counts
>>> d = a - b
>>> d
Counter({'eyes': 7, 'the': 5, 'look': 4, 'into': 3, 'my': 2, 'around': 2,
"you're": 1, "don't": 1, 'under': 1})
>>>

参考文档:

https://docs.python.org/3/library/collections.html

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python语言的12个基础知识点小结
Jul 10 Python
Python中动态获取对象的属性和方法的教程
Apr 09 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
Jul 04 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
对python中的pop函数和append函数详解
May 04 Python
opencv导入头文件时报错#include的解决方法
Jul 31 Python
python @classmethod 的使用场合详解
Aug 23 Python
python修改FTP服务器上的文件名
Sep 11 Python
python将dict中的unicode打印成中文实例
May 11 Python
Python3.9.1中使用split()的处理方法(推荐)
Feb 07 Python
Python3中最常用的5种线程锁实例总结
Jul 07 Python
PYTHON InceptionV3模型的复现详解
May 06 Python
Python排序搜索基本算法之归并排序实例分析
Dec 08 #Python
Python实现基于二叉树存储结构的堆排序算法示例
Dec 08 #Python
Python排序搜索基本算法之堆排序实例详解
Dec 08 #Python
基于Django contrib Comments 评论模块(详解)
Dec 08 #Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 #Python
python在ubuntu中的几种安装方法(小结)
Dec 08 #Python
Python编程之gui程序实现简单文件浏览器代码
Dec 08 #Python
You might like
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
在JavaScript中遭遇级联表达式陷阱
2007/03/08 Javascript
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
Python魔法方法功能与用法简介
2019/04/04 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
资料员的岗位职责
2013/11/20 职场文书
医学专业大学生求职的自我评价
2013/11/27 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
幼儿园感谢信
2015/01/21 职场文书
学校端午节活动总结
2015/02/11 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
质量整改通知单
2015/04/21 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
Python中rapidjson参数校验实现
2021/07/25 Python
详解Redis在SpringBoot工程中的综合应用
2021/10/16 Redis
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python
Python中的 enumerate和zip详情
2022/05/30 Python