Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例


Posted in Python onMarch 15, 2018

本文实例讲述了Python找出序列中出现次数最多的元素。分享给大家供大家参考,具体如下:

问题:找出一个元素序列中出现次数最多的元素是什么

解决方案:collections模块中的Counter类正是为此类问题所设计的。它的一个非常方便的most_common()方法直接告诉你答案。

# Determine the most common words in a list
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)
top_three = word_counts.most_common(3)
print(top_three)
# outputs [('eyes', 8), ('the', 5), ('look', 4)]
# Example of merging in more words
morewords = ['why','are','you','not','looking','in','my','eyes']
word_counts.update(morewords) #使用update()增加计数
print(word_counts.most_common(3))
>>> ================================ RESTART ================================
>>>
[('eyes', 8), ('the', 5), ('look', 4)]
[('eyes', 9), ('the', 5), ('my', 4)]
>>>

在底层实现中,Counter是一个字典,在元素和它们出现的次数间做了映射。

>>> word_counts
Counter({'eyes': 9, 'the': 5, 'my': 4, 'look': 4, 'into': 3, 'around': 2, 'not': 2, "don't": 1, 'under': 1, 'are': 1, 'looking': 1, "you're": 1, 'you': 1, 'why': 1, 'in': 1})
>>> word_counts.most_common(3) #top_three
[('eyes', 9), ('the', 5), ('my', 4)]
>>> word_counts['not']
2
>>> word_counts['eyes']
9
>>> word_counts['eyes']+1
10
>>> word_counts
Counter({'eyes': 9, 'the': 5, 'my': 4, 'look': 4, 'into': 3, 'around': 2, 'not': 2, "don't": 1, 'under': 1, 'are': 1, 'looking': 1, "you're": 1, 'you': 1, 'why': 1, 'in': 1})
>>> word_counts['eyes']=word_counts['eyes']+1 #手动增加元素计数
>>> word_counts
Counter({'eyes': 10, 'the': 5, 'my': 4, 'look': 4, 'into': 3, 'around': 2, 'not': 2, "don't": 1, 'under': 1, 'are': 1, 'looking': 1, "you're": 1, 'you': 1, 'why': 1, 'in': 1})
>>>

增加元素出现次数可以通过手动进行增加,也可以借助update()方法;

另外,Counter对象另一个特性是它们可以同各种数学运算操作结合起来使用:

>>> a=Counter(words)
>>> a
Counter({'eyes': 8, 'the': 5, 'look': 4, 'my': 3, 'into': 3, 'around': 2, 'under': 1, "you're": 1, 'not': 1, "don't": 1})
>>> b=Counter(morewords)
>>> b
Counter({'not': 1, 'my': 1, 'in': 1, 'you': 1, 'looking': 1, 'are': 1, 'eyes': 1, 'why': 1})
>>> c=a+b
>>> c
Counter({'eyes': 9, 'the': 5, 'my': 4, 'look': 4, 'into': 3, 'around': 2, 'not': 2, "don't": 1, 'under': 1, 'are': 1, 'looking': 1, "you're": 1, 'you': 1, 'in': 1, 'why': 1})
>>> # substract counts
>>> d=a-b
>>> d
Counter({'eyes': 7, 'the': 5, 'look': 4, 'into': 3, 'my': 2, 'around': 2, 'under': 1, "you're": 1, "don't": 1})
>>>

当面对任何需要对数据制表或计数的问题时,Counter对象都是你手边的得力工具。比起利用字典自己手写算法,更应采用该方式完成任务。

(代码摘自《Python Cookbook》)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python pickle类库介绍(对象序列化和反序列化)
Nov 21 Python
使用beaker让Facebook的Bottle框架支持session功能
Apr 23 Python
两个使用Python脚本操作文件的小示例分享
Aug 27 Python
Python中的time模块与datetime模块用法总结
Jun 30 Python
详解python实现小波变换的一个简单例子
Jul 18 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 Python
使用tensorboard可视化loss和acc的实例
Jan 21 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
Apr 07 Python
pandas数据处理之绘图的实现
Jun 15 Python
Django和Ueditor自定义存储上传文件的文件名
Feb 25 Python
Python如何使用神经网络进行简单文本分类
Feb 25 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
Jun 23 Python
ubuntu安装sublime3并配置python3环境的方法
Mar 15 #Python
Centos7 Python3下安装scrapy的详细步骤
Mar 15 #Python
python实现word 2007文档转换为pdf文件
Mar 15 #Python
python中使用PIL制作并验证图片验证码
Mar 15 #Python
Python读取Word(.docx)正文信息的方法
Mar 15 #Python
30秒轻松实现TensorFlow物体检测
Mar 14 #Python
tensorflow识别自己手写数字
Mar 14 #Python
You might like
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
php网页病毒清除类
2014/12/08 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
jquery 插件开发 extjs中的extend用法小结
2013/01/04 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
python实现巡检系统(solaris)示例
2014/04/02 Python
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
详解python中的Turtle函数库
2018/11/19 Python
Python 多维List创建的问题小结
2019/01/18 Python
Python对象与引用的介绍
2019/01/24 Python
详解python运行三种方式
2019/05/13 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
《木笛》教学反思
2014/03/01 职场文书
法人授权委托书范本
2014/04/04 职场文书
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers