序列中出现次数最多的元素

问题

怎样找出一个序列中出现次数最多的元素呢?

解法

collections.Counter 类就是专门为这类问题而设计的,它甚至有一个有用的most_common() 方法直接给了你答案。
为了演示,先假设你有一个单词列表并且想找出哪个单词出现频率最高。你可以这
样做:

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)]

讨论

作为输入, Counter 对象可以接受任意的 hashable 序列对象。在底层实现上,一个 Counter 对象就是一个字典,将元素映射到它出现的次数上。比如:

>>> word_counts['not']
1
>>> word_counts['eyes']
8
>>>

如果你想手动增加计数,可以简单的用加法:

>>> morewords = ['why','are','you','not','looking','in','my','eyes']
>>> for word in morewords:
... word_counts[word] += 1
...
>>> word_counts['eyes']
9
>>>

或者你可以使用 update() 方法:

>>> word_counts.update(morewords)
>>>

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})
>>>

毫无疑问, Counter 对象在几乎所有需要制表或者计数数据的场合是非常有用的工具。在解决这类问题的时候你应该优先选择它,而不是手动的利用字典去实现。

《Python Cookbook 3rd》笔记(1.12):序列中出现次数最多的元素相关推荐

  1. python counter 出现次数最少的元素_[PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法...

    问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案 c ...

  2. python出现的次数最多的元素_Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算...

    本文实例讲述了Python找出序列中出现次数最多的元素.分享给大家供大家参考,具体如下: 问题:找出一个元素序列中出现次数最多的元素是什么 解决方案:collections模块中的Counter类正是 ...

  3. python出现的次数最多的元素_【Python 秘籍】序列中出现次数最多的元素

    问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案. ...

  4. 贪心算法求解一个序列中出现次数最多的元素问题

    贪心算法求解一个序列中出现次数最多的元素问题 题目: 指定n个正整数,编写一个实验程序找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入描述:输入的第1行只有一个正整数n(1 ...

  5. python列表(list)中出现次数最多的元素使用collection包的Counter方法

    python列表(list)中出现次数最多的元素使用collection包的Counter方法 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tup ...

  6. Python找出列表中出现次数最多的元素三种方式

    通过三种方式给大家介绍,具体详情如下所示: 方式一: 原理:创建一个新的空字典,用循环的方式来获取列表中的每一个元素,判断获取的元素是否存在字典中的key,如果不存在的话,将元素作为key,值为列表中 ...

  7. C语言简单题-求整数序列中出现次数最多的数

    7-2 求整数序列中出现次数最多的数 (15分) 本题要求统计一个整型序列中出现次数最多的整数及其出现次数. 输入格式: 输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数.数字 ...

  8. JAVA-求整数序列中出现次数最多的数

    R7-3 JAVA-求整数序列中出现次数最多的数 (10 分) 要求统计一个整型序列中出现次数最多的整数及其出现次数. 输入格式: 在一行中给出序列中整数个数N(0<N≤1000),依次给出N个 ...

  9. 7-55 求整数序列中出现次数最多的数 (15 分)

    7-55 求整数序列中出现次数最多的数 (15 分) 本题要求统计一个整型序列中出现次数最多的整数及其出现次数. 输入格式: 输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数. ...

最新文章

  1. 在 Linux 中把一个网页转换成 PDF的技巧介绍
  2. OpenSessionInViewFilter原理以及为什么要用OpenSessionInViewF
  3. 手把手教你使用ECharts绘制可视化图表
  4. [转载]地球物理经典书目——成像方向
  5. e.getMessage() e.printStackTrace() 和e.printStackTrace() 小结
  6. linux中查看某个进程打开的文件数
  7. 汇编:将指定的内存中连续N个字节填写成指定的内容
  8. js 对象数组和对象的使用
  9. PullToRefresh使用详解(四)--利用回调函数实现到底加载
  10. 廖雪峰python学习笔记之Web开发
  11. python中digits用法_在sklearn digits examp中使用自己的图像
  12. J-LINK烧录bin文件
  13. 机器学习(聚类八)——密度聚类
  14. python属于系统软件吗_2020年,编程语言将不再只属于程序员,尤其是这门语言...
  15. 操作系统与裸机的区别
  16. matlab 二值图像连通区域标记法,一种二值图像连通区域标记的简单快速算法_葛春平...
  17. Data Path Manager(DPM)-数据路径管理
  18. VMware | Workstation中如何进入恢复模式(Recovery)?
  19. linux:ping不通www.baidu.com
  20. cherry Tree的严重漏洞

热门文章

  1. etherpeek nx在网络维护中的应用
  2. android 多个按钮响应,处理Android Recyclerview中的多个按钮单击并将响应存储在Array或ArrayList中...
  3. greenplum 查询出来的数字加减日期_Python实践代码总结第5集(日期相关处理)
  4. java enum in class_Java 8需要一个转换,而Java 7没有 – enum.getClass/getDeclaringClass
  5. gitee怎么仓库间传文件_实现一个简单的基于码云(Gitee) 的 Storage
  6. 怎么形容智能冰激凌机器人_有关于形容描写冰激凌的句子及图片
  7. dem聚类只能成为一类
  8. 【转】CLR Profiler 性能分析工具 (转)
  9. IsPostBack须要注意的地方,这些都不是POSTBACK动作
  10. REVERSE-PRACTICE-BUUCTF-9