2013-04-09 5 views
0

파이썬의 초보자로서 최근 특정 기준으로 중첩 목록을 정렬하는 문제에 봉착했습니다. 나는이 목록을 싶습니다 Python : 특정 기준을 사용하여 중첩 목록 정렬

nestedList=[['R2D2','1path1','1path2'], 
      ['R3A1','2path1','2path2'], 
      ['R15L2','3path1','3path2']] 

각 중첩 된 목록의 첫 번째 문자열으로 분류 될 :이 같은 중첩 된 목록을 가지고있다. 나는 그것이를 정렬 할 싶습니다 때문에,

nestedList.sort(reverse=True) 

나는이 안전한지 확실하지 않다 :

nestedList=[['R15L2','3path1','3path2'], 
      ['R3A1','2paht1','2path2'], 
      ['R2D2','1path1','1path2']] 

가 현재 내 솔루션은 역 매개 변수를 사용하여 정렬 기능을 사용한다 : 같은 결과는 보일 것이다 두 번째 문자열에도 나열하십시오.

어떻게 첫 번째 문자열로만 정렬 할 수 있습니까? (예 : 'R15L2', 'R3A1'등)

도움을 주셔서 감사합니다.

+0

내 방법은 정말 그래도 작동하지 않습니다 .. 예를 들어, '1path1'을 '5path1'로 변경하면 예상 결과가 나오지 않을 것입니다 : ... ( – AplusG

+0

'R3A1'은 'R2D2'보다 크지 만 원하는 결과는 이해할 수 없습니다. 그것들을 당신의 분류 목록에 넣기 전에? – halex

+0

흠 ... 나는 conside ring R15L2> R3A1> R2D2 ... 아마도 이것은 예상했던 것보다 더 복잡합니다 ... – AplusG

답변

5

당신은 (키가 목록의 첫 번째 요소입니다)를 키에 따라 정렬 할 :

nestedList.sort(key=lambda x: x[0]) 

또는

import operator as op 

nestedList.sort(key=op.itemgetter(0)) 
0
a = [['3f','2f','5a'],['5a','0r','7v'],['4r','58v','5l']] 
>>> a 
[['3f', '2f', '5a'], ['5a', '0r', '7v'], ['4r', '58v', '5l']] 
>>> a.sort() 
>>> a 
[['3f', '2f', '5a'], ['4r', '58v', '5l'], ['5a', '0r', '7v']] 
>>> a.sort(reverse=True) 
>>> a 
[['5a', '0r', '7v'], ['4r', '58v', '5l'], ['3f', '2f', '5a']] 
>>> 
+0

죄송합니다 ... 무엇을 말하려고하는지 ... 이미이 해결책이 있지만 완전히 정확하지 않은 것 같습니다 ... – AplusG