利用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基类函数的重载与调用实例分析
Jan 12 Python
python实现登陆知乎获得个人收藏并保存为word文件
Mar 16 Python
python递归实现快速排序
Aug 18 Python
Python根据当前日期取去年同星期日期
Apr 14 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 Python
OpenCV模板匹配matchTemplate的实现
Oct 18 Python
python paramiko远程服务器终端操作过程解析
Dec 14 Python
python中68个内置函数的总结与介绍
Feb 24 Python
Python中的xlrd模块使用原理解析
May 21 Python
python的链表基础知识点
Sep 13 Python
python爬虫---requests库的用法详解
Sep 28 Python
详解pycharm配置python解释器的问题
Oct 15 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
在WordPress中使用wp-cron插件来设置定时任务
2015/12/10 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
Django中Model的使用方法教程
2018/03/07 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
深入了解Django中间件及其方法
2019/07/26 Python
解决python 找不到module的问题
2020/02/12 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
django在开发中取消外键约束的实现
2020/05/20 Python
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
工程地质勘察专业大学生求职信
2013/10/13 职场文书
饮料业务员岗位职责
2013/12/15 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
司法所长先进事迹
2014/06/02 职场文书
医学专业自荐信
2014/06/14 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
医院护士工作检讨书
2014/10/26 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
演讲比赛主持词
2015/06/29 职场文书
2015年大学迎新晚会总结
2015/07/16 职场文书
2016孝老爱亲模范事迹材料
2016/02/26 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
Go并发4种方法简明讲解
2022/04/06 Golang