VPS/云主机等
优惠信息分享

Python根据字典中的值进行排序的3种方法

https://www.daniao.org/

Python中如果要对字典的values值进行排序的话,还是简单的,有好几种方法可以实现,大鸟这里把自己平时用的3种方法记录下来。

实列:

一个uid的字典,如下:

 uid = {        "a": 10003,        "b": 10004,        "c": 10001,        "d": 10002        }

要求:

请根据字典中的值进行从小到大的排序,获得排序后的新字典 sorted_uid,排序后的结果如下:

{'c': 10001, 'd': 10002, 'a': 10003, 'b': 10004}

实现:

第一种方法:

使用key使用lambda匿名函数取value进行排序

a = dict(sorted(uid.items(), key=lambda x: x[1]))

这里延伸一下,如果要是从大到小排列,可以这样。

a1 =dict(sorted(uid.items(),key = lambda x:x[1],reverse = True))

得到结果:

{'b': 10004, 'a': 10003, 'd': 10002, 'c': 10001}

第二种方法

使用operator的itemgetter进行排序

import operatorb = dict(sorted(uid.items(), key=operator.itemgetter(1)))#输出结果{'c': 10001, 'd': 10002, 'a': 10003, 'b': 10004}

第三种方法:

使用字典推导式来实现。

c = {key:value for (value, key) in sorted(zip(uid.values(), uid.keys()))}#输出结果{'c': 10001, 'd': 10002, 'a': 10003, 'b': 10004}

其他

如果要对key进行排序,可以这样。

key使用lambda匿名函数按键进行排序a2 = sorted(uid.items(),key = lambda x:x[0])

或者这样。

# 第三种方法讲key和value分装成元祖,在进行排序f = zip(uid.keys(), uid.values())c = sorted(f)#结果[('a', 10003), ('b', 10004), ('c', 10001), ('d', 10002)]

sorted方法原理

我们在idle中输入help(sorted),如下:

 help(sorted)Help on built-in function sorted in module builtins:sorted(iterable, /, *, key=None, reverse=False)#返回一个新列表,其中包含迭代中所有项目的升序排列。 可以提供自定义键功能以自定义排序顺序,并且可以设置反向标志以按降序请求结果。

sorted() 函数对所有可迭代的对象进行排序操作。

[mark_e]

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

[/mark_e]

dict.items()

dict.items() 以列表返回可遍历的(键, 值) 元组数组。比如:

uid = { "a": 10003, "b": 10004, "c": 10001, "d": 10002 }uid.items()dict_items([('a', 10003), ('b', 10004), ('c', 10001), ('d', 10002)])

赞(0)
未经允许不得转载:遗弃你|YIQINI.COM » Python根据字典中的值进行排序的3种方法

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册