您的位置:首页 > 编程语言 > Python开发

Python中求一个列表中的众数,并统计元素出现的次数存入字典,最后将字典的值降序排序

2019-01-09 18:50 716 查看

python中求一个列表中的众数,统计元素出现的次数并将其存入字典,最后将字典集合中的值降序排序

话不多说直接上代码

#输入一串数字将其强转为列表
list1=list(input("请输入一串数字:"))
print(list1)
dict1={}
#循环统计数字出现的个数并将其添加到字典集合中
for i in list1:
skey=dict1.get(i)#获取字典中的键的值
if skey==None:#判断键的值是否为空
dict1[i]=1
else:
dict1[i]+=1
print(dict1)
#获取字典中的键和值
sk=dict1.keys()
sv=dict1.values()
#循环判断列表中的众数
for i in sk:
if dict1[i]==(max(sv)):
print("列表中的众数为:%s"%i)

第一种方法

#将字典中的值转换为列表类型并进行排序反转
sl=list(sv)
sl.sort()
sl.reverse()
dict2={}
for i in sl:
for j in sk:
# 循环判断字典中的值是否与列表中的值相等若相等则值存入一个新的字典中
if dict1[j]==i:
dict2[j] = i
print(dict2)

第二种方法

dict3=sorted(dict1.items(), key=lambda x: x[1],reverse=True)
print(dict(dict3))#将返回的列表强转为字典

第三种方法

sor=zip(sk,sv)
dict4=sorted(sor, key=lambda x: x[1],reverse=True)
print(dict(dict4))

第四种方法

import operator
dict5=sorted(dict1.items(), key=operator.itemgetter(1),reverse=True)
print(dict(dict5))
关于sorted()方法

sorted函数按value值对字典排序
要对字典的value排序则需要用到key参数,在这里主要提供一种使用lambda表达式的方法,如下:
这里的d.items()实际上是将d转换为可迭代对象,
迭代对象的元素为(‘lilee’,25)、(‘wangyan’,21)、(‘liqun’,32)、(‘lidaming’,19),items()方法将字典的元素转化为了元组,而这里key参数对应的lambda表达式的意思则是选取元组中的第二个元素作为比较参数 (如果写作key=lambda item:item[0]的话则是选取第一个元素作为比较对象,也就是key值作为比较对象。 lambda x:y中x表示输出参数,y表示lambda函数的返回值) ,所以采用这种方法可以对字典的value进行排序。
注意:排序后的返回值是一个list,而原字典中的键值对被转换为了list中的元组。

sorted(iterable[, cmp[, key[, reverse]]])
参数说明:

iterable – 可迭代对象。
cmp – 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

关于zip()方法

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

zip([iterable, …])
参数说明:

iterabl – 一个或多个迭代器;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐