订单列表根据两个项目

时间:2013-07-30 13:28:51

标签: python list

假设我有一个由多个列表组成的列表:

a = [[14, 0.5], [12, 0.8], [22, 0.6], [15, 0.2], [17, 0.5], [18, 0.4]]

我需要先根据 max到min 中每个列表中的 second 项目重新排序此列表,然后根据 first 项目从 min到max

我知道如何使用第二项和第一项第二项根据两项重新排序列表:

b = sorted(a, key=lambda item:(item[1], item[0]))
b = [[15, 0.2], [18, 0.4], [14, 0.5], [17, 0.5], [22, 0.6], [12, 0.8]]

但是这会返回从 min到两个项目排序的列表,这不是我需要的。

b应该是这样的:

b = [[12, 0.8], [22, 0.6], [14, 0.5], [17, 0.5], [18, 0.4], [15, 0.2]]

2 个答案:

答案 0 :(得分:6)

您可以使用负值:

b = sorted(a, key=lambda item:(-item[1], item[0]))

答案 1 :(得分:4)

只需使用你想要反过来的项目的否定:

>>> b = sorted(a, key=lambda item:(-item[1], item[0]))
>>> b
[[12, 0.8], [22, 0.6], [14, 0.5], [17, 0.5], [18, 0.4], [15, 0.2]]