Python에서 다른 목록으로 목록 정렬

Shivam Arora 2023년1월30일
  1. zip()sorted() 함수를 사용하여 Python의 다른 목록을 기반으로 목록 정렬
  2. NumPy 모듈을 사용하여 Python의 다른 목록을 기반으로 목록 정렬
  3. more_itertools.sort_together를 사용하여 Python의 다른 목록을 기반으로 목록 정렬
Python에서 다른 목록으로 목록 정렬

일반적으로 목록을 정렬할 때 오름차순 또는 내림차순으로 정렬합니다. 그러나 Python에서 다른 목록의 순서에 따라 목록을 정렬할 수 있습니다.

이 기사에서 다른 목록의 값을 기반으로 주어진 목록을 정렬하는 방법을 배웁니다.

zip()sorted() 함수를 사용하여 Python의 다른 목록을 기반으로 목록 정렬

이 방법에서는 zip() 함수를 사용하여 두 개의 주어진 목록을 결합하여 세 번째 객체를 만들 것입니다. 첫 번째는 정렬되어야 하고 두 번째는 정렬이 의존하는 목록입니다.

그런 다음 정렬되고 압축된 목록에서 주어진 목록의 각 쌍의 첫 번째 요소를 추출하는 sorted() 함수를 사용할 수 있습니다.

A = ["r", "s", "t", "u", "v", "w", "x", "y", "z"]
B = [0, 1, 1, 0, 1, 2, 2, 0, 1]
result_list = [i for _, i in sorted(zip(B, A))]
print(result_list)

출력:

['r', 'u', 'y', 's', 't', 'v', 'z', 'w', 'x']

NumPy 모듈을 사용하여 Python의 다른 목록을 기반으로 목록 정렬

이 방법에서는 목록을 NumPy 배열로 변환한 다음 정렬 알고리즘을 목록에 적용합니다. argsort() 함수를 사용하여 정렬이 의존하는 배열을 정렬한 다음 해당 값을 사용하여 두 번째 배열을 필터링합니다.

다음 예를 참조하십시오.

import numpy

A = ["r", "s", "t", "u", "v", "w", "x", "y", "z"]
B = [0, 1, 1, 0, 1, 2, 2, 0, 1]

A = numpy.array(A)
B = numpy.array(B)
inds = B.argsort()
sorted_a = A[B]
print(sorted_a)

출력:

['r' 's' 's' 'r' 's' 't' 't' 'r' 's']

목록의 최종 데이터를 얻으려면 tolist() 함수를 사용하십시오.

more_itertools.sort_together를 사용하여 Python의 다른 목록을 기반으로 목록 정렬

more_itertools 모듈은 itertools 모듈의 확장입니다. sort_together 함수는 key_list 인수의 목록을 정렬 우선 순위로 사용하여 함께 정렬된 입력 반복 가능 항목을 반환합니다.

예를 들어,

from more_itertools import sort_together

X = ["r", "s", "t", "u", "v", "w", "x", "y", "z"]
Y = [0, 1, 1, 0, 1, 2, 2, 0, 1]
s = sort_together([Y, X])[1]
print(list(s))

출력:

['r', 'u', 'y', 's', 't', 'v', 'z', 'w', 'x']

최종 결과를 목록으로 얻으려면 list() 함수를 사용해야 합니다.

관련 문장 - Python List