利用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爬取Coursera课程资源的详细过程
Nov 04 Python
Python搜索引擎实现原理和方法
Nov 27 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
Feb 18 Python
浅谈Python中的私有变量
Feb 28 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
python使用for循环计算0-100的整数的和方法
Feb 01 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
Python箱型图处理离群点的例子
Dec 09 Python
python 爬虫 实现增量去重和定时爬取实例
Feb 28 Python
python logging 重复写日志问题解决办法详解
Aug 04 Python
Pytorch反向传播中的细节-计算梯度时的默认累加操作
Jun 05 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
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
PHP类中Static方法效率测试代码
2010/10/17 PHP
给初学者的30条PHP最佳实践(荒野无灯)
2011/08/02 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
2017/08/02 PHP
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
2015/04/07 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
jquery利用json实现页面之间传值的实例解析
2016/12/12 Javascript
Webpack之tree-starking 解析
2018/09/11 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
Python操作csv文件实例详解
2017/07/31 Python
Python装饰器原理与简单用法实例分析
2018/04/29 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
浅谈Python_Openpyxl使用(最全总结)
2019/09/05 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
python打包多类型文件的操作方法
2020/09/21 Python
Python中return函数返回值实例用法
2020/11/19 Python
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
全国道德模范事迹
2014/02/01 职场文书
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
学校党员干部承诺书
2015/05/04 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python