2016-12-28 77 views
-1

我有一個包含以下數據的Python列表:排序列表,不是按照字母順序

[('c',3),('a',1),('d',1),('b',5)] 

我想訂購它,以便首先它是由最高數量排序:

[('b',5),('c',3),('d',1),('a',1)] 

然後責令其按字母順序

[('b',5),('c',3),('a',1),('d',1)] 

可以這樣使用一個排序函數怎麼辦?

+1

以這種方式代表列表 - '[( 'C',3),( 'A',1),( 'd',1),( 'B', 5)]'else這些值'c,a,...'將被視爲變量 –

回答

4

嘗試這種情況:

s = [("c",3),("a",1),("d",1),("b",5)] 
sorted(s, key=lambda x: (-x[1], x[0])) 
# gives [('b', 5), ('c', 3), ('a', 1), ('d', 1)] 
+0

完美並且如果你想在原地進行,使用's.sort(key = lambda x:(-x [1 ],x [0]))' –