利用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 enumerate遍历数组示例应用
Sep 06 Python
Python基于PycURL自动处理cookie的方法
Jul 25 Python
Python  pip安装lxml出错的问题解决办法
Feb 10 Python
python判断设备是否联网的方法
Jun 29 Python
Python3实现获取图片文字里中文的方法分析
Dec 13 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
Django基础知识 web框架的本质详解
Jul 18 Python
Python values()与itervalues()的用法详解
Nov 27 Python
pandas中的数据去重处理的实现方法
Feb 10 Python
python import 上级目录的导入
Nov 03 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
Apr 21 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输出九九乘法表代码实例
2015/03/27 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
PHP children()函数讲解
2019/02/03 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
清除网页历史记录,屏蔽后退按钮!
2008/12/22 Javascript
JavaScript 动态改变图片大小
2009/06/11 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
PYTHON基础-时间日期处理小结
2018/05/05 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
python3人脸识别的两种方法
2019/04/25 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
美丽的现代设计家具:2Modern
2018/07/26 全球购物
城市规划应届毕业生自荐信
2014/07/04 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
警察群众路线整改措施
2014/09/26 职场文书
自荐信模板大全
2015/03/27 职场文书
运动会200米广播稿
2015/08/19 职场文书
python实现网络五子棋
2021/04/11 Python
浅谈Python numpy创建空数组的问题
2021/05/25 Python
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle