다양한 길이의 중첩 목록이 있습니다. 각 색인별로 알파벳 순으로 정렬하고 싶습니다. 이 말을 그건, 내가 가진 :Python에서 가변 길이의 중첩 목록 정렬
a = [['header1', 'header2', 'header3'],
['apple', 'banana', 'apple' ],
['kiwi', 'pear', 'banana' ],
['peach', None, 'orange' ],
['pear', None, None ]]
내가 루프를 통해 이동하고 값을 일시적으로 목록을 만들 수 있도록 중첩 사용하여 시도했다 :
a = [['header1', 'header2', 'header3'],
['apple', 'pear', 'banana' ],
['pear', 'banana', 'orange' ],
['kiwi', None, 'apple' ],
['peach', None, None ]]
나는 다음과 같은 출력 작업을하고 싶습니다 정렬 및 다시 추가하기 전에 특정 인덱스에 대해 인덱스 오류가 발생하는 것 같습니다 (None 값 때문일 수 있습니다)?
중첩 루프가이를 수행하는 가장 효율적인 방법인지 이해하는 것이 좋습니다. 원래는 itemgetter
을 사용하여 중첩 목록을 정렬했지만 그 다음에 전치 부호를 사용하고 map(lambda *row: list(row), *a)
을 사용했습니다. 이렇게해도 주문이 보존되지 않았습니다.
지금까지 볼 수있는 한 중첩 된 목록 전체에서 인덱스를 유지하지 않고서는 전치 된 중첩 목록에 itemgetter
을 사용할 수 없습니다.
는 또한 일부 쉼표를 놓치고,
str
에None
을 비교할 수 있다는 것입니다. 파이썬 콘솔에 넣은 것을 붙여 넣고 작동하는지 확인하십시오. – khelwood알려 주셔서 감사합니다. 이제이 문제가 해결 된 것 같습니다. – samg86
커스텀 비교자를 가진'sorted' 내장 함수는 잘 동작 할 것이고, 생성자 표현식은 임시리스트보다 더 편리 할 것입니다. "재 추가"오류는 사소한 실수로 보입니다. –