假设我有一个由多个列表组成的列表:
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]]
答案 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]]