问题

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

解决方案

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出现的次数最多的元素_【Python 秘籍】序列中出现次数最多的元素相关推荐

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

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

  2. python返回序列中的最小元素_python实现获取序列中最小的几个元素

    本文实例讲述了python实现获取序列中最小的几个元素.分享给大家供大家参考. 具体方法如下: import heapq import random def issorted(data): data ...

  3. java数组出现次数最多的数_找出数组中出现次数最多的那个数——主元素问题...

    方法一:以空间换时间,可以定义一个计数数组int count[101],用来对数组中数字出现的次数进行计数(只能针对数组中数字的范围1~100),count数组中最大的元素对应的下标,即为出现次数最多 ...

  4. python矩阵中找满足条件的元素_从numpy数组中取出满足条件的元素示例

    例如问题:从 arr 数组中提取所有奇数元素. input:arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) output: #> array([1, ...

  5. js删除两个集合中共同元素_多个集合中的共同和独特元素

    js删除两个集合中共同元素 本周,我们将暂时中断较高级别的问题和技术文章,以解决我们中许多人可能面临的一些代码问题. 没什么花哨的或太辛苦的,但是有一天它可能会节省您15分钟的时间,偶尔回到基础上也很 ...

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

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

  7. 求包含n(n>1)个元素的无序序列中第k小的元素。

    求包含n[n>1]个元素的无序序列中第k小的元素. 题目描述 C++程序答案 题目描述 [问题描述] 编写一个实验程序,利用STL中的priority_queue(优先队列)求出包含n个元素的无 ...

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

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

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

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

最新文章

  1. STC89C52 STC89LE52 NRF24L01无线 教程 (二)
  2. python根须系统斜杠_深入浅出Python中的os模块
  3. Linux6、7 系列 安装、卸载mysql
  4. 被黑客NeoN“附体” QQ为推产品谎报漏洞
  5. 从JDK 8到JDK 17,GC都有哪些进步?
  6. 如何借助大数据提升城市治理现代化水平
  7. python colorama_Python常用模块—— Colorama模块
  8. 109.虚函数与析构构造
  9. 圆满结束,一睹各位大神风采
  10. html input url,HTML5表单之Input 部类-url
  11. FICO配置详解之三:固定资产会计配置
  12. 一个C语言编写的坦克大战游戏
  13. 骗子改电脑配置信息兜售垃圾,怕上当进来学习一下
  14. Android Studio模拟器的创建和SDK的安装
  15. 超声波测距仪编程_超声波测距仪的设计和实现
  16. 自贸港有志青年,捂碳星球旧衣回收项目,成功引起团中央的重视
  17. 160个CrackMe之108 mfc程序 寻找按钮事件,代码还原(上)
  18. Thumbnailator
  19. C语言 两个整数的四则运算
  20. 杭州市民卡面试题【杭州多测师】【杭州多测师_王sir】

热门文章

  1. transition过渡的趣玩
  2. Centos环境下删除Oracle11g客户端文档
  3. 设计模式1——设计模式的原则
  4. alot英文怎么读_很多的英文怎么说
  5. swift 选中长按项_Swift下使用UICollectionView 实现长按拖拽功能
  6. python求散点曲线下方面积
  7. tensorflow中GPU的设置
  8. OpenCV学习笔记(十八):凸包,最小包围区域算子:convexHull(),minAreaRect(),minEnclosingTriangle(),minEnclosingCircle()
  9. VC创建DLL动态链接库及其调用
  10. QT中的滚动条QScrollArea