튜플 리스트를 각 튜플이 가진 최대 요소를 기준으로 정렬해야 하는 경우가 있습니다. 이럴 때는 파이썬 내장 함수인 max()를 사용해 가장 큰 값을 반환하는 함수를 먼저 정의하고, 이를 sort() 메서드의 key 인자로 전달하면 됩니다.
reverse=True 옵션을 함께 사용하면 최대값이 큰 튜플부터 내림차순으로 정렬할 수 있습니다.
예제 코드
def get_max_value(my_val):
return max(my_val)
my_list = [(4, 6, 8, 1), (13, 21, 42, 56), (7, 1, 9, 0), (1, 2)]
print("The list is : ")
print(my_list)
my_list.sort(key=get_max_value, reverse=True)
print("The sorted tuples are : ")
print(my_list)실행 결과
The list is : [(4, 6, 8, 1), (13, 21, 42, 56), (7, 1, 9, 0), (1, 2)] The sorted tuples are : [(13, 21, 42, 56), (7, 1, 9, 0), (4, 6, 8, 1), (1, 2)]
코드 설명
get_max_value라는 이름의 함수를 정의합니다. 이 함수는max()함수를 호출하여 전달받은 튜플에서 가장 큰 값을 반환합니다.정수형 튜플 네 개로 구성된 리스트
my_list를 생성하고, 원본 리스트를 콘솔에 출력합니다.sort()메서드에key=get_max_value를 지정하여, 각 튜플의 최대값을 비교 기준으로 삼아 리스트를 정렬합니다.reverse=True옵션 때문에 결과는 내림차순(큰 값 → 작은 값)으로 표시됩니다.정렬된 리스트가 최종적으로 콘솔에 출력됩니다.
람다(lambda) 함수로 더 간결하게 작성하기
별도의 함수를 정의하지 않고 람다 표현식을 사용하면 코드를 한 줄로 줄일 수 있습니다.
my_list.sort(key=lambda x: max(x), reverse=True)
두 방법 모두 동일한 결과를 반환하며, 상황에 따라 가독성이 좋은 방식을 선택하면 됩니다. 참고로 sort()는 원본 리스트 자체를 변경하는 in-place 정렬이며, 원본을 유지하고 싶다면 sorted(my_list, key=max, reverse=True)처럼 sorted() 함수를 사용하는 것이 좋습니다.