利用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写的一个简单DNS服务器实例
Jun 04 Python
python检查指定文件是否存在的方法
Jul 06 Python
PyQT实现多窗口切换
Apr 20 Python
好的Python培训机构应该具备哪些条件
May 23 Python
python3的print()函数的用法图文讲解
Jul 16 Python
pandas 选取行和列数据的方法详解
Aug 08 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
Dec 04 Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 Python
Python无头爬虫下载文件的实现
Apr 02 Python
Python基于gevent实现文件字符串查找器
Aug 11 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
Dec 08 Python
对Pytorch 中的contiguous理解说明
Mar 03 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中文字符串截取函数
2013/11/12 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
2018/05/09 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
python实现公司年会抽奖程序
2019/01/22 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
Django实现跨域请求过程详解
2019/07/25 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
大学生年度自我鉴定
2013/10/31 职场文书
申论倡议书范文
2014/05/13 职场文书
委托书格式
2014/08/01 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
庆六一宣传标语
2014/10/08 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
中学教师读书笔记
2015/07/01 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
python神经网络编程之手写数字识别
2021/05/08 Python