This question already has answers here:
Sorting a Python list by two fields
(7个答案)
5年前关闭。
假设我有一个列表,其中包含许多包含两个项目的列表:
我需要首先根据每个列表中的第二个项目(从最大到最小)对列表进行重新排序,然后根据最小到最大的第一项进行重新排序。
我知道如何使用第一项和第二项来根据两个项对列表重新排序:
但这会返回两个项目的从最小到最大排序的列表,这不是我所需要的。
这是
(7个答案)
5年前关闭。
假设我有一个列表,其中包含许多包含两个项目的列表:
a = [[14, 0.5], [12, 0.8], [22, 0.6], [15, 0.2], [17, 0.5], [18, 0.4]]
我需要首先根据每个列表中的第二个项目(从最大到最小)对列表进行重新排序,然后根据最小到最大的第一项进行重新排序。
我知道如何使用第一项和第二项来根据两个项对列表重新排序:
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]]
但这会返回两个项目的从最小到最大排序的列表,这不是我所需要的。
这是
b
的样子:b = [[12, 0.8], [22, 0.6], [14, 0.5], [17, 0.5], [18, 0.4], [15, 0.2]]
最佳答案
您可以使用负值:
b = sorted(a, key=lambda item:(-item[1], item[0]))
10-08 10:51