Classificar lista por outra lista em Python
-
Use as funções
zip()
esorted()
para ordenar a lista com base em outra lista em Python -
Use o módulo
NumPy
para classificar a lista com base em outra lista em Python -
Use
more_itertools.sort_together
para classificar a lista com base em outra lista em Python
Geralmente, quando classificamos as listas, fazemos isso em ordem crescente ou decrescente. No entanto, podemos classificar uma lista com base na ordem de outra lista em Python.
Aprenderemos como classificar uma determinada lista com base nos valores de outra lista neste artigo.
Use as funções zip()
e sorted()
para ordenar a lista com base em outra lista em Python
Neste método, usaremos a função zip()
para criar um terceiro objeto combinando as duas listas fornecidas, a primeira que deve ser classificada e a segunda da qual a classificação depende.
Podemos então usar a função sorted()
, que extrai os primeiros elementos de cada par das listas fornecidas da lista ordenada e compactada.
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)
Produção:
['r', 'u', 'y', 's', 't', 'v', 'z', 'w', 'x']
Use o módulo NumPy
para classificar a lista com base em outra lista em Python
Neste método, convertemos as listas em matrizes NumPy
e, em seguida, aplicamos o algoritmo de classificação às listas. Classificamos a matriz da qual a classificação depende usando a função argsort()
e, em seguida, usamos esses valores para filtrar a segunda matriz.
Veja o seguinte exemplo.
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)
Produção:
['r' 's' 's' 'r' 's' 't' 't' 'r' 's']
Para obter os dados finais de uma lista, use a função tolist()
.
Use more_itertools.sort_together
para classificar a lista com base em outra lista em Python
O módulo more_itertools
é uma extensão do módulo itertools
. A função sort_together
retorna os iteráveis de entrada classificados juntos, com a lista no argumento key_list
como a prioridade para classificação.
Por exemplo,
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))
Produção:
['r', 'u', 'y', 's', 't', 'v', 'z', 'w', 'x']
Precisamos usar a função list()
para obter o resultado final como uma lista.