튜플의 튜플이 하나 있는데 두 번째 요소로 먼저 정렬 한 다음 맨 아래 레이어의 첫 번째와 세 번째로 정렬하고 반복적으로이를 수행하려고합니다. 중간 계층의 각 튜플. 사용하여, 내가 거기에 일부 길을 왔다중 레이어 튜플의 여러 레이어로 요소 정렬 - 파이썬
sampleToBeSorted = (
((‘A’, 31, ‘B’), (‘D’, 32, ‘B’)),
((‘C’, 31, ‘A’), (‘B’, 24, ‘C’), (‘C’, 33, ‘B’)),
((‘D’, 31, ‘A’), (‘D’, 32, ‘B’), (‘C’, 29, ‘B’), (‘D’, 216, ‘C’)),
((‘D’, 31, ‘A’), (‘D’, 52, ‘B’)),
((‘D’, 40, ‘B’), (‘A’, 32, ‘C’)),
((‘D’, 52, ‘B’), (‘D’, 32, ‘B’)),
)
: 그것은 다음과 같습니다
sampleToBeSorted = (
(('D', 52, 'B'), ('D', 32, 'B')),
(('D', 31, 'A'), ('D', 52, 'B')),
(('A', 31, 'B'), ('D', 32, 'B')),
(('C', 31, 'A'), ('B', 24, 'C'), ('C', 33, 'B')),
(('D', 31, 'A'), ('D', 32, 'B'), ('C', 29, 'B'), ('D', 216, 'C')),
(('D', 40, 'B'), ('A', 32, 'C')),
)
있도록 :
예를 들어, 나는 다음과 같은 목록을 정렬 할
sortedSample = sorted(sampleToBeSorted, key= lambda x:(x[0][1],x[0][0],x[0][2]))
그러나 이것은 중간 계층의 첫 번째 튜플에만 정렬됩니다. 이 반복적으로 중간 계층의 튜플 모두를 위해이 작업을 얻으려면, 나는 이것이 내가 확실히 무엇을 올바른 방법으로 유효하지 않은 구문을 알아낼 수 없습니다되고 난 그냥
sortedSample = sorted(sampleToBeSorted, key= lambda x:(x[i][1],x[i][0],x[i][2]) for i in range(len(sampleToBeSorted[x]))
같은 것을이를 수정할 수 있다고 생각 이것을 쓰는 것입니다. 어떤 아이디어? 이런 종류의 일이 전에 응답 되었다면 나는 사전에 사과하지만, 나는 내가 생각할 수있는 모든 것을 시도하고 찾았다.
마지막 표현식이 닫는 괄호를 벗어났습니다 :
는의 핵심은 단순히
결과 귀하의 기준에 따라 재 주문 튜플의 목록입니다. 그러나 이것이 유일한 문제는 아닙니다. –