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

외부 리스트 순서에 따라 튜플 리스트를 정렬하는 Python 프로그램

Python에서 튜플로 이루어진 리스트를 외부에서 정의한 리스트의 순서에 맞춰 정렬해야 하는 경우가 있습니다. 예를 들어, 데이터베이스 조회 결과나 API 응답 데이터가 특정 기준 순서와 일치하도록 재배열해야 할 때 유용합니다.

이럴 때 리스트 컴프리헨션(list comprehension)dict() 함수를 함께 사용하면 간단하게 해결할 수 있습니다.

예제 코드

my_list = [('Mark', 34), ('Will', 91), ('Rob', 23)]

print("튜플 리스트 : ")
print(my_list)

ordered_list = ['Will', 'Mark', 'Rob']
print("기준이 되는 정렬 리스트 : ")
print(ordered_list)
temp = dict(my_list)
my_result = [(key, temp[key]) for key in ordered_list]
print("정렬된 튜플 리스트 : ")
print(my_result)

실행 결과

튜플 리스트 :
[('Mark', 34), ('Will', 91), ('Rob', 23)]
기준이 되는 정렬 리스트 :
['Will', 'Mark', 'Rob']
정렬된 튜플 리스트 :
[('Will', 91), ('Mark', 34), ('Rob', 23)]

코드 설명

  • 먼저 ('이름', 나이) 형태의 튜플로 구성된 리스트 my_list를 정의하고 콘솔에 출력합니다.
  • 다음으로 원하는 순서를 담은 별도의 리스트 ordered_list를 정의하고 출력합니다.
  • dict(my_list)를 호출하여 튜플 리스트를 딕셔너리로 변환합니다. 이때 튜플의 첫 번째 요소가 키(key), 두 번째 요소가 값(value)이 됩니다.
  • 리스트 컴프리헨션을 통해 ordered_list의 요소(키)를 순회하면서 해당 키에 매핑된 값을 꺼내 새로운 튜플 리스트 my_result를 생성합니다.
  • 그 결과, 외부 리스트의 순서를 그대로 따르는 정렬된 튜플 리스트가 완성되어 콘솔에 출력됩니다.

참고 사항

이 방식은 시간 복잡도 면에서도 효율적입니다. 딕셔너리는 해시 기반 구조이므로 키 조회가 평균 O(1)에 이루어지며, 전체 정렬 작업은 O(n) 시간 안에 처리됩니다. 다만 외부 리스트에 존재하지 않는 키가 포함되어 있으면 KeyError가 발생할 수 있으므로, 필요하다면 temp.get(key)를 사용해 기본값을 지정하는 것이 안전합니다.