按字典列表的第二个值排序

时间:2018-11-01 23:02:37

标签: python python-3.x

我正在尝试按第二个值对字典列表进行排序。

我尝试了一切,但无法解决。

这是我的词典列表:

[{'P3': [7, 117]}, {'P8': [14, 88]}, {'P2': [19, 102]}, {'P4': [19, 9]}]

所需结果:

[{'P4': [19, 9]}, {'P8': [14, 88]}, {'P2': [19, 102]}, {'P3': [7, 117]}]

谢谢

2 个答案:

答案 0 :(得分:6)

因此,对于每个字典,您需要提取字典中唯一值的第二个数字。

您可以通过调用D来获得字典D.values()中的值列表。由于您需要第一个值(因为只有一个),因此如果您使用的是Python 2,则为D.values()[0]...。在Python 3中,values()方法返回的是dict_values类型而不是列表,因此您需要list(D.values())[0](在Python 2中也可以使用)。

您想要结果列表的第二个元素,所以是list(D.values())[0][1]

将它们放在一起,我们得到:

>>> p=[{'P3': [7, 117]}, {'P8': [14, 88]}, {'P2': [19, 102]}, {'P4': [19, 9]}]
>>> sorted(p, key=lambda D: list(D.values())[0][1])
[{'P4': [19, 9]}, {'P8': [14, 88]}, {'P2': [19, 102]}, {'P3': [7, 117]}]
>>>

答案 1 :(得分:-1)

在python 2中:

result = sorted(yourlist, key = lambda x : x.values()[0][1])