2013-02-08 2 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를 정렬하는 것입니다. 즉, 나는 결과가되고 싶어요 : 파이썬 : 다른 방향으로 정렬하는 두 개의 키를 사용하여 목록 정렬

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

내가 이걸 어떻게해야합니까

? 당신이 숫자가 아닌 데이터가있는 경우 당신은 두 개의 패스 종류 (최하위 키 첫번째로 정렬)을 수행 할 수

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

대안 : 숫자를 정렬

답변

5

, 당신은 부정적인 정렬 키를 사용할 수 있습니다 :

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

두 개의 패스 정렬을 제안하려고했습니다. 'list.sort' 메소드는 안정적인 정렬이므로 - 잘 작동합니다. –

관련 문제