首页 > 解决方案 > 根据字典中列表值的第二项对具有列表作为值的字典列表进行排序

问题描述

我有一个包含字典的列表,在每个字典中,值也是列表,如:

a = [{"25.21" : [400,500] , "25.22" : [700,502]} , {"12.15" : [350,800] , "12.13" : [750,803]}]

我想根据列表的第二项对主列表进行排序,这是字典的值,它又是主列表的一项。输出应该是这样的:

a = [ {"12.13" : [750,803] , "12.15" : [350,800] } , {"25.22" : [700,502], "25.21" : [400,500] }]

列表的第一项作为字典中每个键的值将是不同的。如果可能的话,如何在不使用 operator itemgetter 的情况下在 oneliner 中做到这一点?

这个问题和这个问题不一样。在这种情况下,列表中的字典值仅包含整数,因为此问题将列表作为主列表中的字典值。

标签: pythonpython-3.xlistdictionary

解决方案


使用sorted

演示:

a = [{"25.21" : [400,500] , "25.22" : [700,502]} , {"12.15" : [350,800] , "12.13" : [750,803]}]

print(sorted(a, key=lambda x: list(x.items())[1][1], reverse=True))
#print(sorted(a, key=lambda x: x.items()[1][1], reverse=True))   #python2

输出:

[{'12.15': [350, 800], '12.13': [750, 803]}, {'25.21': [400, 500], '25.22': [700, 502]}]

推荐阅读