튜플로 이루어진 리스트를 특정 기준에 맞춰 정렬해야 할 때는 sort() 메서드를 활용하면 됩니다.
sort() 메서드는 반복 가능한(iterable) 객체의 요소들을 오름차순 또는 내림차순 등 지정한 순서대로 정렬하며, 원본 리스트 자체를 직접 변경(in-place)한다는 특징이 있습니다.
파이썬의 리스트는 정수, 실수, 문자열 등 서로 다른 자료형의 값을 함께 저장할 수 있습니다. 그리고 튜플 리스트란, 여러 개의 튜플을 하나의 리스트 안에 담아둔 구조를 의미합니다.
아래 예제를 통해 실제 동작 과정을 살펴보겠습니다.
예제 코드
def tuple_sort(my_tup):
my_tup.sort(key = lambda x: x[1])
return my_tup
my_tuple = [('Will', 100), ('John', 67), ('Harold', 86), ('Jane', 35)]
print("The tuple is ")
print(my_tuple)
print("The sorted list of tuple is :")
print(tuple_sort(my_tuple))실행 결과
The tuple is
[('Will', 100), ('John', 67), ('Harold', 86), ('Jane', 35)]
The sorted list of tuple is :
[('Jane', 35), ('John', 67), ('Harold', 86), ('Will', 100)]코드 설명
tuple_sort라는 이름의 함수를 정의하고, 인자로 튜플 리스트를 전달받습니다.- 함수 내부에서는
sort()메서드와 람다(lambda) 함수를 조합하여 튜플의 두 번째 요소(숫자 값)를 기준으로 정렬합니다. - 여기서
key = lambda x: x[1]부분이 핵심인데, 각 튜플의 인덱스 1번 요소, 즉 점수를 정렬 기준으로 삼겠다는 의미입니다. - 람다 함수는 하나의 표현식만 가질 수 있지만, 필요한 만큼의 인자를 받을 수 있으며 해당 표현식의 결과값을 반환합니다.
- 튜플 리스트를 정의한 뒤 콘솔에 출력합니다.
- 이 리스트를 인자로 넘겨 함수를 호출하고, 정렬된 결과를 반환받습니다.
- 반환된 정렬 결과가 콘솔에 출력됩니다.
추가 팁: 내림차순 정렬하기
만약 값을 큰 순서부터 정렬하고 싶다면 reverse=True 옵션을 추가하면 됩니다.
my_tup.sort(key = lambda x: x[1], reverse=True)
이렇게 하면 [('Will', 100), ('Harold', 86), ('John', 67), ('Jane', 35)]처럼 점수가 높은 순서대로 정렬됩니다. 또한 원본 리스트를 유지한 채 새로운 정렬 결과가 필요하다면, 원본을 변경하지 않는 sorted() 내장 함수를 사용하는 것도 좋은 대안입니다.