您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

利用Python找出序列中出现最多的元素示例代码

5b51 2022/1/14 8:15:55 python 字数 4943 阅读 336 来源 www.jb51.cc/python

前言 Python包含6种内置的序列:列表、元组、字符串、Unicode字符串、buffer对象、xrange对象。在序列中的每个元素都有自己的编号。列表与元组的区别在于,列表是可以修改,而组元不可修改。理论上几乎所有情况下元组

概述

前言

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以外的一些特殊的容器类型,分别是:

文档参见:http://docs.python.org/2/library/collections.html

Counter类

Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。

为了演示,先假设你有一个单词列表并且想找出哪个单词出现频率最高。你可以这样做:

words = [
 'look','into','eyes','look','the','around',"don't","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,'my': 4,'not': 2,'why': 1,'you': 1})
>>> # Subtract counts
>>> d = a - b
>>> d
Counter({'eyes': 7,'my': 2,'under': 1})
>>>

参考文档:

https://docs.python.org/3/library/collections.html

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持

总结

以上是编程之家为你收集整理的利用Python找出序列中出现最多的元素示例代码全部内容,希望文章能够帮你解决利用Python找出序列中出现最多的元素示例代码所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶