Python에서 다른 목록으로 목록 정렬
Shivam Arora
2023년1월30일
-
zip()
및sorted()
함수를 사용하여 Python의 다른 목록을 기반으로 목록 정렬 -
NumPy
모듈을 사용하여 Python의 다른 목록을 기반으로 목록 정렬 -
more_itertools.sort_together
를 사용하여 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()
함수를 사용해야 합니다.