利用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实现服务器中只重载被修改的进程的方法
Apr 30 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
pytorch permute维度转换方法
Dec 14 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
Python制作exe文件简单流程
Jan 24 Python
Python脚本按照当前日期创建多级目录
Mar 01 Python
python频繁写入文件时提速的方法
Jun 26 Python
Python参数类型以及常见的坑详解
Jul 08 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
Feb 28 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 Python
Python+Selenium实现读取网易邮箱验证码
Mar 13 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/09/30 PHP
php提示Failed to write session data错误的解决方法
2014/12/17 PHP
33道php常见面试题及答案
2015/07/06 PHP
使用PHP实现微信摇一摇周边红包
2016/01/04 PHP
WAF的正确bypass
2017/01/05 PHP
js获取图片大小的函数代码
2011/09/20 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
基于原生JS实现图片裁剪
2016/08/01 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
查看django版本的方法分享
2018/05/14 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
一篇文章教你用python画动态爱心表白
2020/11/22 Python
python matlab库简单用法讲解
2020/12/31 Python
表单button的outline在firefox浏览器下的问题
2012/12/24 HTML / CSS
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
发展部经理职责规定
2014/02/22 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android