2017-04-13 2 views
-4

에서 0으로 상승하는 목록의 목록을 정렬파이썬 파이썬 2.X에서 갖는 마지막 장소

x = [ 
    [0,0,0], 
    [1,2,3], 
    [150,400,200], 
    [0,0,0], 
    [225,100,150] 
] 

나는 그렇게 x는

[ 
    [1,2,3], 
    [225,100,150], 
    [150,400,200], 
    [0,0,0], 
    [0,0,0], 
] 

x[i][2]으로 정렬됩니다 만들기 위해 할 수있는 일 0과 마지막으로 오름차순?

+0

[파이썬? : 사용자 지정 목록을 주문 방법]의 사용 가능한 복제 (http://stackoverflow.com/questions/3624323/python-how-to -custom-order-a-list) – languitar

+0

@languitar는 도움이되지 않았습니다. 목록의 목록에 완전히 제로화 된 요소가 3 개 있고, 1을 가질 수도 있고 아무 것도 가질 수도없는 일반적인 해결책이 필요합니다. –

+0

그리고 무엇이 문제입니까? 이 사건들? 각 하위 목록의 마지막 항목을 정렬 키로 선택하는 람다 식을 사용하십시오. – languitar

답변

2

이 그것을 할 수 있습니다 :

sorted(t, key=lambda x: x[2] if x[2] > 0 else float('inf')) 
+0

이것은 float ('inf')를 가로 질러 왔지만이 솔루션에 도달하지 못했습니다. 감사! –

1
x.sort(key=lambda y: (y[2] == 0, y[2])) 
관련 문제