튜플로 이루어진 리스트가 있을 때, 각 튜플의 마지막 요소를 기준으로 오름차순(증가 순서)으로 정렬해야 하는 경우가 자주 있습니다. 이럴 때는 두 가지 함수를 활용하면 깔끔하게 해결할 수 있습니다.
첫 번째 함수는 튜플의 마지막 요소를 반환하는 역할을 하고, 두 번째 함수는 이를 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_elem을key값으로 사용하여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 옵션을 추가하면 됩니다.