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

파이썬 | 두 번째 리스트를 기준으로 첫 번째 리스트 값 정렬하기

두 번째 리스트를 기준으로 첫 번째 리스트의 값을 정렬해야 하는 경우, 파이썬의 sorted 메서드와 zip 메서드를 함께 사용하면 간단하게 해결할 수 있습니다.

리스트는 서로 다른 자료형의 값을 하나로 묶어 저장할 수 있는 자료구조입니다. 즉, 정수, 실수, 문자열 등 어떤 타입의 데이터든 저장할 수 있습니다.

sorted 메서드는 리스트의 요소들을 오름차순으로 정렬하며, zip 메서드는 여러 개의 반복 가능한(iterable) 객체를 인자로 받아 이를 튜플 형태로 묶은 뒤 결과를 반환합니다.

아래는 실제 동작 예시입니다.

예제

def list_sort(my_list_1, my_list_2):
   zipped_list_pairs = zip(my_list_2, my_list_1)
   my_result = [x for _, x in sorted(zipped_list_pairs)]
   return my_result
my_list_1 = ['m', 'o', 'p', 'l', 'k', 'v', 'c', 'e', 'r']
my_list_2 = [1, 0, 0, 2, 2, 1, 1, 0, 0]
print("첫 번째 리스트 :")
print(my_list_1)
print("두 번째 리스트 :")
print(my_list_2)
print("두 번째 리스트를 기준으로 첫 번째 리스트 정렬")
print(list_sort(my_list_1, my_list_2))
my_list_3 = ['h', 'k', 'l', 'p', 'q', 'p', 'k', 'l', 'h', 'm', 'u', 'z', 'f', 't']
my_list_4 = [0, 1, 1, 1, 0, 2, 2, 2, 0, 2, 1, 2, 1, 0]
print("세 번째 리스트 :")
print(my_list_3)
print("네 번째 리스트 :")
print(my_list_4)
print("네 번째 리스트를 기준으로 세 번째 리스트 정렬")
print(list_sort(my_list_3, my_list_4))

출력 결과

첫 번째 리스트 :
['m', 'o', 'p', 'l', 'k', 'v', 'c', 'e', 'r']
두 번째 리스트 :
[1, 0, 0, 2, 2, 1, 1, 0, 0]
두 번째 리스트를 기준으로 첫 번째 리스트 정렬
['e', 'o', 'p', 'r', 'c', 'm', 'v', 'k', 'l']
세 번째 리스트 :
['h', 'k', 'l', 'p', 'q', 'p', 'k', 'l', 'h', 'm', 'u', 'z', 'f', 't']
네 번째 리스트 :
[0, 1, 1, 1, 0, 2, 2, 2, 0, 2, 1, 2, 1, 0]
네 번째 리스트를 기준으로 세 번째 리스트 정렬
['h', 'h', 'q', 't', 'f', 'k', 'l', 'p', 'u', 'k', 'l', 'm', 'p', 'z']

동작 원리 설명

  • list_sort라는 이름의 함수가 정의되며, 이 함수는 두 개의 리스트를 매개변수로 받습니다.
  • 함수 내부에서 zip을 사용해 두 리스트를 쌍(pair)으로 묶고, 그 결과를 별도의 변수에 저장합니다.
  • 묶인 데이터를 sorted로 정렬한 후, 리스트 컴프리헨션을 통해 원래의 값만 추출하여 새로운 변수에 할당합니다.
  • 정렬된 결과가 함수의 반환값으로 돌려지며, 콘솔에 출력됩니다.
  • 예제에서는 두 쌍의 리스트를 정의하고 화면에 표시한 뒤,
  • 정의된 함수를 호출하여 정렬을 수행합니다.
  • 마지막으로 정렬된 결과가 콘솔에 출력됩니다.