首页 » 网站推广 » phpascii字典排序技巧_Python根据字典中值的大年夜小 对字典中的项排序

phpascii字典排序技巧_Python根据字典中值的大年夜小 对字典中的项排序

访客 2024-11-18 0

扫一扫用手机浏览

文章目录 [+]

说到排序,首先想到的便是内置函数 sorted 函数,内置函数要比我们自己写的排序效率要高,但是直策应用sorted函数对字典排序的时候,它是根据字典的键的ASCII编码顺序进行排序的,要想让字典根据值的大小来排序,可以参考下面的方案。

先看一下 sorted 函数的用法吧

phpascii字典排序技巧_Python根据字典中值的大年夜小 对字典中的项排序

sorted函数的格式:sorted(iterable,key,reverse),sorted有iterable,key,reverse三个参数。

phpascii字典排序技巧_Python根据字典中值的大年夜小 对字典中的项排序
(图片来自网络侵删)

  iterable 表示可以迭代的工具,例如可以是dict.items()、dict.keys()等。

  key 是一个函数,常日利用利用lambda匿名函数来实现,用来选取参与比较的元素。

  reverse 用来指定按倒序还是顺序排序,reverse=True是倒序,reverse=False是顺序,默认reverse=False。

方案一:将字典转换为元组,再利用 sorted 函数进行排序

来一个烂大街的案例,学生的学习成绩,详细排序办法如下:

data = { 'lilei': 98, 'hanmeimei': 87, 'zhangsan': 65, 'laowang': 89 }# 1,利用列表解析转为元组d1 = [(v, k) for k, v in data.items()]print(d1) # 结果 [(98, 'lilei'), (87, 'hanmeimei'), (65, 'zhangsan'), (89, 'laowang')]res = sorted(d1, reverse= True)print(res) # 结果 [(98, 'lilei'), (89, 'laowang'), (87, 'hanmeimei'), (65, 'zhangsan')]# 2,利用zip函数转为元组d2 = list(zip(data.values(), data.keys()))print(d2) # 结果 [(98, 'lilei'), (87, 'hanmeimei'), (65, 'zhangsan'), (89, 'laowang')]res = sorted(d2, reverse= True)print(res)# 结果 [(98, 'lilei'), (89, 'laowang'), (87, 'hanmeimei'), (65, 'zhangsan')]

那么,能不能直策应用sorted函数对字典的值进行排序呢,我不想转成元组,显然也可以。

方案二:通报sorted函数的key参数指定为字典的值,推举利用

data = { 'lilei': 98, 'hanmeimei': 87, 'zhangsan': 65, 'laowang': 89 }res = sorted(data.items(), key = lambda item: item[1], reverse = True)print(res) # 结果 [('lilei', 98), ('laowang', 89), ('hanmeimei', 87), ('zhangsan', 65)]

按照这种办法就更简洁一点了,只须要一行代码了

方案三:利用operator模块的itemgetter函数

import operatordata = { 'lilei': 98, 'hanmeimei': 87, 'zhangsan': 65, 'laowang': 89 }res = sorted(data.items(), key=operator.itemgetter(1), reverse=True)print(res) # 结果 [('lilei', 98), ('laowang', 89), ('hanmeimei', 87), ('zhangsan', 65)]

可以看到基本和方案二一个意思,但是多引入了operator模块,实在没有必要,还是推举方案二。

以上三种方法都是创建一个新的经由排序的列表,原始字典的顺序并不会改变。
如果须要按值对字典进行原地排序,可以利用collections模块中的OrderedDict类。

如果字典的值具有相同的值,那么排序的顺序是不愿定的,由于字典是无序的。

标签:

相关文章

今日头条算法引领个化信息时代的变革

信息爆炸时代已经到来。每个人都是信息的接收者和传播者。面对海量的信息,人们往往感到无所适从。为了解决这一问题,各大互联网公司纷纷推...

网站推广 2025-01-31 阅读1 评论0

今日头条算法信息推荐的秘密武器

信息爆炸的时代已经来临。人们每天都会接触到大量的信息,而如何从这些信息中筛选出有价值的内容,成为了亟待解决的问题。今日头条算法作为...

网站推广 2025-01-31 阅读1 评论0

今日头条算法精准推荐背后的技术奥秘

信息爆炸的时代已经来临。我们每天都要面对海量的信息,如何从这些信息中筛选出自己感兴趣的内容,成为了每个人都关心的问题。今日头条作为...

网站推广 2025-01-31 阅读1 评论0