我正在尝试按第二个值对字典列表进行排序。
我尝试了一切,但无法解决。
这是我的词典列表:
[{'P3': [7, 117]}, {'P8': [14, 88]}, {'P2': [19, 102]}, {'P4': [19, 9]}]
所需结果:
[{'P4': [19, 9]}, {'P8': [14, 88]}, {'P2': [19, 102]}, {'P3': [7, 117]}]
谢谢
答案 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])