Classificar lista por outra lista em Python

Shivam Arora 30 janeiro 2023
  1. Use as funções zip() e sorted() para ordenar a lista com base em outra lista em Python
  2. Use o módulo NumPy para classificar a lista com base em outra lista em Python
  3. Use more_itertools.sort_together para classificar a lista com base em outra lista em Python
Classificar lista por 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.

Artigo relacionado - Python List