利用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 相关文章推荐
pymssql ntext字段调用问题解决方法
Dec 17 Python
python基础教程之获取本机ip数据包示例
Feb 10 Python
python实现Decorator模式实例代码
Feb 09 Python
python2 与 python3 实现共存的方法
Jul 12 Python
matplotlib给子图添加图例的方法
Aug 03 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 Python
python实现跨excel sheet复制代码实例
Mar 03 Python
如何理解python中数字列表
May 29 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
Python使用tkinter实现小时钟效果
Feb 22 Python
python元组打包和解包过程详解
Aug 02 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
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
javascript动态控制服务器控件实例
2014/09/05 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
详解Angular2响应式表单
2017/06/14 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
JS实现灯泡开关特效
2020/03/30 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
[01:02:00]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第三场 1月24日
2021/03/11 DOTA
python网络编程学习笔记(五):socket的一些补充
2014/06/09 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
Python基于类路径字符串获取静态属性
2020/03/12 Python
使用Python封装excel操作指南
2021/01/29 Python
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
存储过程的优点有哪些
2012/09/27 面试题
艺术爱好者的自我评价分享
2013/10/08 职场文书
毕业生个人的求职信范文
2013/12/03 职场文书
幼教简历自我评价
2014/01/28 职场文书
增员口号大全
2014/06/18 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
大明湖导游词
2015/02/03 职场文书
2015入党自荐书范文
2015/03/05 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL