利用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字符串连接方式汇总
Aug 21 Python
tensorflow入门之训练简单的神经网络方法
Feb 26 Python
python最长回文串算法
Jun 04 Python
python3 对list中每个元素进行处理的方法
Jun 29 Python
pycharm new project变成灰色的解决方法
Jun 27 Python
Python 使用matplotlib模块模拟掷骰子
Aug 08 Python
PyTorch中Tensor的维度变换实现
Aug 18 Python
django实现模型字段动态choice的操作
Apr 01 Python
python 使用递归的方式实现语义图片分割功能
Jul 16 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
Jan 05 Python
基于PyInstaller各参数的含义说明
Mar 04 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
Jun 28 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
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
JSON语法五大要素图文介绍
2012/12/04 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
2014/09/17 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
python正则表达式match和search用法实例
2015/03/26 Python
python创建关联数组(字典)的方法
2015/05/04 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
Python3爬虫全国地址信息
2019/01/05 Python
selenium+python环境配置教程详解
2019/05/28 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
机械电子工程毕业生自荐信
2013/11/23 职场文书
自我评价200字分享
2013/12/17 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
工作自我推荐信范文
2015/03/25 职场文书
Python可视化学习之matplotlib内置单颜色
2022/02/24 Python
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技