Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 튜플 리스트를 마지막 요소 기준으로 오름차순 정렬하는 방법

튜플로 이루어진 리스트가 있을 때, 각 튜플의 마지막 요소를 기준으로 오름차순(증가 순서)으로 정렬해야 하는 경우가 자주 있습니다. 이럴 때는 두 가지 함수를 활용하면 깔끔하게 해결할 수 있습니다.

첫 번째 함수는 튜플의 마지막 요소를 반환하는 역할을 하고, 두 번째 함수는 이를 sorted() 함수의 key 매개변수에 전달하여 실제 정렬을 수행합니다.

예제 코드

def sort_last_elem(num):
    return num[-1]

def sort_structure(my_tuple):
    return sorted(my_tuple, key=sort_last_elem)

my_list = [(45, 31), (23, 67), (92, 60), (90, 12)]
print("The list is :")
print(my_list)
print("The sorted list of elements is :")
print(sort_structure(my_list))

실행 결과

The list is :
[(45, 31), (23, 67), (92, 60), (90, 12)]
The sorted list of elements is :
[(90, 12), (45, 31), (92, 60), (23, 67)]

코드 설명

  • sort_last_elem이라는 이름의 함수를 정의합니다. 이 함수는 인덱스 -1을 사용해 전달받은 튜플의 마지막 요소를 반환합니다.

  • sort_structure라는 또 다른 함수를 정의합니다. 이 함수는 앞서 정의한 sort_last_elemkey 값으로 사용하여 sorted() 함수를 호출하고, 정렬된 리스트를 반환합니다.

  • 튜플들의 리스트인 my_list를 정의한 후, 콘솔에 출력하여 원본 데이터를 확인합니다.

  • sort_structure 함수에 해당 리스트를 인자로 전달하여 호출합니다.

  • 마지막 요소를 기준으로 오름차순 정렬된 결과가 콘솔에 출력됩니다.

추가 팁: 람다(lambda) 함수로 더 간결하게 작성하기

별도의 함수를 정의하지 않고 람다 함수를 사용하면 코드를 한 줄로 줄일 수 있습니다.

my_list = [(45, 31), (23, 67), (92, 60), (90, 12)]

sorted_list = sorted(my_list, key=lambda x: x[-1])
print(sorted_list)
# 출력: [(90, 12), (45, 31), (92, 60), (23, 67)]

이처럼 key=lambda x: x[-1] 구문은 각 튜플의 마지막 요소를 정렬 기준으로 삼는다는 의미이며, 내림차순으로 정렬하고 싶다면 sorted(my_list, key=lambda x: x[-1], reverse=True)처럼 reverse=True 옵션을 추가하면 됩니다.