利用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 open读写文件实现脚本
Sep 06 Python
探究数组排序提升Python程序的循环的运行效率的原因
Apr 01 Python
python实现将pvr格式转换成pvr.ccz的方法
Apr 28 Python
Python中字典的基本知识初步介绍
May 21 Python
python3序列化与反序列化用法实例
May 26 Python
Python2.x中文乱码问题解决方法
Jun 02 Python
Python基于高斯消元法计算线性方程组示例
Jan 17 Python
python多进程提取处理大量文本的关键词方法
Jun 05 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
python如何实现不可变字典inmutabledict
Jan 08 Python
Python selenium模拟手动操作实现无人值守刷积分功能
May 13 Python
python中如何使用虚拟环境
Oct 14 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
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
jQuery数据缓存用法分析
2015/02/20 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
vue中路由验证和相应拦截的使用详解
2017/12/13 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
原生js实现购物车功能
2020/09/23 Javascript
python使用any判断一个对象是否为空的方法
2014/11/19 Python
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
深入理解Python中变量赋值的问题
2017/01/12 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
基于python使用tibco ems代码实例
2019/12/20 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
计算机科学与技术应届生求职信
2013/11/07 职场文书
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
小学毕业演讲稿
2014/04/25 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
融资合作协议书范本
2014/10/17 职场文书
行政助理岗位职责
2015/02/10 职场文书
首都博物馆观后感
2015/06/05 职场文书