2013-02-08 82 views
2
>>> from operator import itemgetter 
>>> ul = [(10,2),(9,4),(10,3),(10,4),(9,1),(9,3)] 
>>> ol = sorted(ul, key=itemgetter(0,1), reverse=True) 
>>> ol 
[(10, 4), (10, 3), (10, 2), (9, 4), (9, 3), (9, 1)] 

我想要的是在第二個鍵上排序reverse = False。換句話說,我想要的結果是:Python:使用兩個不同方向排序的鍵排序列表

[(10, 2), (10, 3), (10, 4), (9, 1), (9, 3), (9, 4)] 

我該怎麼做?

回答

5

對數字進行排序,你可以使用一個負排序關鍵字:

sorted(ul, key=lambda x: (-x[0], x[1])) 

或者,如果你有非數字數據,你可以做兩遍排序(通過最顯著關鍵第一分選) :

ol = sorted(ul, key=lambda x: x[1]) 
ol = sorted(ol, key=lambda x: x[0], reverse=True) 
+1

我打算建議兩種排序...作爲一個'list.sort'方法是一個穩定的排序 - 這很好地工作 – 2013-02-08 22:06:03