This question already has answers here:
Sorting a Python list by two fields
                                
                                    (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