튜플로 이루어진 리스트를 특정 순서대로 정렬해야 할 때는 파이썬의 내장 함수인 sorted()를 활용할 수 있습니다.
sorted() 함수는 리스트의 요소들을 정렬한 새로운 리스트를 반환하며, 원본 리스트는 변경하지 않는다는 점이 특징입니다.
파이썬의 리스트는 정수, 실수, 문자열 등 서로 다른 자료형의 값을 함께 저장할 수 있습니다. 튜플 리스트란 여러 개의 튜플을 하나의 리스트에 담은 형태를 의미하며, 이름과 점수처럼 서로 연관된 데이터 쌍을 다룰 때 특히 유용합니다.
이번 글에서는 각 튜플의 두 번째 요소(숫자 값)를 기준으로 튜플 리스트를 오름차순으로 정렬하는 방법을 살펴보겠습니다.
예제 코드
def tuple_sort(my_tup):
return sorted(my_tup, key=lambda x: x[1])
my_tuple = [('Mahe', 11), ('Aisha', 33), ('Will', 50), ('Root', 65)]
print("원본 튜플 리스트 : ")
print(my_tuple)
print("정렬 후 튜플 리스트 : ")
print(tuple_sort(my_tuple))실행 결과
원본 튜플 리스트 :
[('Mahe', 11), ('Aisha', 33), ('Will', 50), ('Root', 65)]
정렬 후 튜플 리스트 :
[('Mahe', 11), ('Aisha', 33), ('Will', 50), ('Root', 65)]코드 설명
tuple_sort라는 함수를 정의하고, 매개변수로 튜플 리스트를 전달받습니다.- 함수 내부에서는
sorted()메서드에key=lambda x: x[1]옵션을 지정하여, 각 튜플의 두 번째 요소(숫자)를 기준으로 리스트를 정렬합니다. - 예제의 데이터가 이미 오름차순(11 → 33 → 50 → 65)으로 배치되어 있기 때문에, 실행 결과가 원본 리스트와 동일하게 출력됩니다.
- 만약 숫자 값이 뒤섞여 있다면, 예를 들어 ('Will', 50)이 ('Aisha', 33)보다 앞에 위치했더라도 정렬 후에는 숫자 크기 순서대로 재배열됩니다.
- 튜플 리스트를 정의한 뒤 콘솔에 출력하고, 해당 리스트를 인자로 함수를 호출합니다.
- 함수는 정렬된 새로운 리스트를 반환하며, 이 결과가 최종적으로 콘솔에 출력됩니다.
추가 팁
sorted()는 원본 리스트를 유지한 채 새로운 정렬 리스트를 반환하는 반면, 리스트 객체의 sort() 메서드는 원본 리스트 자체를 제자리(in-place)에서 정렬한다는 차이가 있습니다. 내림차순으로 정렬하고 싶다면 reverse=True 옵션을 추가하면 되며, 첫 번째 요소를 기준으로 정렬하려면 key=lambda x: x[0]처럼 인덱스를 변경하면 됩니다.