利用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实现简单聊天应用 python群聊和点对点均实现
Sep 14 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
python 随机打乱 图片和对应的标签方法
Dec 14 Python
python实现在cmd窗口显示彩色文字
Jun 24 Python
python安装requests库的实例代码
Jun 25 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
python实现抠图给证件照换背景源码
Aug 20 Python
Python单元测试模块doctest的具体使用
Feb 10 Python
将labelme格式数据转化为标准的coco数据集格式方式
Feb 17 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
Keras模型转成tensorflow的.pb操作
Jul 06 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和ACCESS写聊天室(四)
2006/10/09 PHP
php下过滤html代码的函数 提高程序安全性
2010/03/02 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
php顺序查找和二分查找示例
2014/03/27 PHP
PHP7匿名类用法分析
2016/09/26 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
Javascript 两个窗体之间传值实现代码
2009/09/25 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
2018/10/29 Javascript
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
构建Python包的五个简单准则简介
2015/06/15 Python
Python实现的简单hangman游戏实例
2015/06/28 Python
Python中字典的基础知识归纳小结
2015/08/19 Python
python迭代器与生成器详解
2016/03/10 Python
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
澳大利亚网上书店:QBD
2021/01/09 全球购物
财务科长个人对照检查材料
2014/09/18 职场文书
教师年度个人总结
2015/02/11 职场文书
如何用JavaScipt测网速
2021/05/09 Javascript