2015-01-08 4 views
0

x 값이 증가하도록 목록을 정렬하는 방법과 2 x 값이 같은 경우 낮은 y 값이 우선 적용됩니까?정렬 : x 값이 증가하고 y 값이 감소합니다.

예 : [[0, 1], [1, 2], [1, 3]]은 [[0, 1], [1, 3] 1, 2], [1, 1]

방법이 우선리스트에 .sort() 함수를 적용 동일한 x의 y 값을 비교하는 것,하지만 모든 모양 (람다 사용 등) 간단한 방법

답변

3

가 정렬하려는 항목은 두 요소로 구성된 숫자 값 목록이므로 다음과 같이 작동해야합니다. 내장 된 sorted 함수에 key 인수를 지정하여 각 항목에 대한 정렬 키를 작성할 수 있습니다. 이 경우 원하는 키는 항목 자체와 동일하지만 마이너스 y 값을 사용하여 순서를 바꿉니다. 이 어떤 이유로 작동하지 않는 경우

>>> data = [[0, 1], [1, 0], [1, 2], [1, 3]] 
>>> print(sorted(data, key=lambda x: (x[0], -x[1]))) 
[[0, 1], [1, 3], [1, 2], [1, 0]] 

(아마 당신이 어딘가에 거기에 비 수치있어), 당신은 동일한 방법을 사용하지만, 적절한 비교기를 제공하기 위해 다르게 key 기능을 구성 할 수 있습니다 데이터가 실제로 어떻게 보이는지에 관계없이

관련 문제