Python找出列表中出现次数最多的元素三种方式
作者:qq_1471587327 发布时间:2021-04-11 11:45:40
通过三种方式给大家介绍,具体详情如下所示:
方式一:
原理:创建一个新的空字典,用循环的方式来获取列表中的每一个元素,判断获取的元素是否存在字典中的key,如果不存在的话,将元素作为key,值为列表中元素的count
# 字典方法
words = [
'my', 'skills', 'are', 'poor', 'I', 'am', 'poor', 'I',
'need', 'skills', 'more', 'my', 'ability', 'are',
'so', 'poor'
]
dict1 = {}
for i in words:
if i not in dict1.keys():
dict1[i] = words.count(i)
print(dict1)
运行结果:
{'my': 2, 'skills': 2, 'are': 2, 'poor': 3, 'I': 2, 'am': 1, 'need': 1, 'more': 1, 'ability': 1, 'so': 1}
方式二
原理:使用setdefault函数,setdefault()函数,如果键不存在于字典中,将会添加键并将值设为默认值。
打个比方,我们要查找的这个键不在字典中,我们先将它置为0,然后再加1,再查找到这个键的时候,这个时候它是存在这个字典里面的,故这个setdefault函数不生效,然后我们再把次数加1
words = [
'my', 'skills', 'are', 'poor', 'I', 'am', 'poor', 'I',
'need', 'skills', 'more', 'my', 'ability', 'are',
'so', 'poor'
]
d = dict()
for item in words:
# setdefault()函数,如果键不存在于字典中,将会添加键并将值设为默认值
d[item] = d.setdefault(item, 0) + 1
print(d)
运行结果:
{'my': 2, 'skills': 2, 'are': 2, 'poor': 3, 'I': 2, 'am': 1, 'need': 1, 'more': 1, 'ability': 1, 'so': 1}
方式三
原理:使用collections模块的Counter类
这个模块很强大,尤其是这个类。他可以直接帮我们计数,然后再帮我们排序好。从大到小
from collections import Counter
words = [
'my', 'skills', 'are', 'poor', 'I', 'am', 'poor', 'I',
'need', 'skills', 'more', 'my', 'ability', 'are',
'so', 'poor'
]
collection_words = Counter(words)
print(collection_words)
print(type(collection_words))
运行结果:
Counter({'poor': 3, 'my': 2, 'skills': 2, 'are': 2, 'I': 2, 'am': 1, 'need': 1, 'more': 1, 'ability': 1, 'so': 1})
<class 'collections.Counter'>
还可以输出频率最大的n个元素,类型为list
most_counterNum = collection_words.most_common(3)
print(most_counterNum)
print(type(most_counterNum))
运行结果:
[('poor', 3), ('my', 2), ('skills', 2)]
<class 'list'>
附
ounter类支持collections.Counter类型的相加和相减
也就是用Counter(words)之后,这个类型是可以相加减的,只支持相加减
例子:
print(collection_words + collection_words)
这里要注意:不能为了图方便进行collection_words * 2,因为类型不同,2为int,故不能进行运算
运行结果:
Counter({'poor': 6, 'my': 4, 'skills': 4, 'are': 4, 'I': 4, 'am': 2, 'need': 2, 'more': 2, 'ability': 2, 'so': 2})
来源:https://blog.csdn.net/qq_44168690/article/details/104447527
猜你喜欢
- 前言原子操作这是Java多线程编程的老生常谈了。所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有
- 本文实例为大家分享了Python+Opencv实现图像匹配功能的具体代码,供大家参考,具体内容如下1、原理简单来说,模板匹配就是拿一个模板(
- The WeekdayName function returns the weekday name of a specified day o
- 本文介绍了用ASP的AdoDb.Stream读取/写入UTF-8编码格式的文件的方法:函数名称:ReadTextFile 作用:利用AdoD
- 本篇博文主要讲解Python爬虫实例,重点包括爬虫技术架构,组成爬虫的关键模块:URL管理器、HTML下载器和HTML解析器。爬虫简单架构程
- 本文从算法入手同时通过实例来讲解如何在SQL Server数据库中实现最优最简的整个过程。算法是计算机科学中一个重要的研究方向,是解决复杂问
- 本文实例讲述了python实现爬取千万淘宝商品的方法。分享给大家供大家参考。具体实现方法如下:import timeimport level
- 在 Python 中字符串连接有多种方式,这里简单做个总结,应该是比较全面的了,方便以后查阅。加号连接第一种,通过+号的形式:>>
- 文件名称:ByVal.aspByRef.asp具体代码:<%Sub TestMain()Dim A : A=5Call TestBy(
- 当然这应该属于正常过滤手法,而还有一种过滤HTML标签的最终极手法,则是将一对尖括号及尖括号中的所有字符均替换不显示,该方法对于内容中必须描
- 防止客户机的请求互相干扰或者服务器与维护程序相互干扰的方法主要有多种。如果你关闭数据库,就可以保证服务器和myisamchk和isamchk
- 本文实例讲述了JS+HTML5 canvas绘制验证码。分享给大家供大家参考,具体如下:css样式:<style>body{ &
- mechanize是对urllib2的部分功能的替换,能够更好的模拟浏览器行为,在web访问控制方面做得更全面。结合beauti
- 本文实例为大家分享了python实现简单的飞机大战的具体代码,供大家参考,具体内容如下制作初衷这几天闲来没事干,就想起来好长时间没做过游戏了
- [Q]怎么样查询特殊字符,如通配符%与_ [Q]如何插入单引号到数据库表中 [Q]怎样设置事务一致性 [Q]怎么样利用光标更新数据 [Q]怎
- 前几天写了一个ajax的,总感觉代码比较多,今天晚上又得写了一下,感觉代码还是比较多,但还好的是,比较通用。谁有办法优化一下当然好。&nbs
- 在二维矩阵间的运算:class torch.nn.Conv2d(in_channels, out_channels, kernel_size
- 一、excel的内容二、效果三、需要用的库:openpyxlsmptlibemail.mime.textemail.header四、实现步骤
- 把列表传递给函数后, 函数就能直接访问列表中的内容咯。假设有一组专家,我们想邀请他们参加研讨会。def send_invitation(ex
- 前言老旧或者破损的照片如何修复呢?本文主要分享一个博主使用后非常不错的照片恢复开源项目:Bringing-Old-Photos-Back-t