Ordenar lista por otra lista en Python

Shivam Arora 30 enero 2023
  1. Utilice las funciones zip() y sorted() para ordenar la lista en función de otra lista en Python
  2. Utilice el módulo NumPy para ordenar la lista en función de otra lista en Python
  3. Utilice more_itertools.sort_together para ordenar la lista en función de otra lista en Python
Ordenar lista por otra lista en Python

Generalmente, cuando ordenamos listas, lo hacemos en orden ascendente o descendente. Sin embargo, podemos ordenar una lista según el orden de otra lista en Python.

Aprenderemos cómo ordenar una lista determinada en función de los valores de otra lista en este artículo.

Utilice las funciones zip() y sorted() para ordenar la lista en función de otra lista en Python

En este método, usaremos la función zip() para crear un tercer objeto combinando las dos listas dadas, la primera que debe ser ordenada y la segunda de la que depende la ordenación.

Entonces podemos usar la función sorted(), que extrae los primeros elementos de cada par de las listas dadas de la lista ordenada y comprimida.

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)

Producción :

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

Utilice el módulo NumPy para ordenar la lista en función de otra lista en Python

En este método, convertimos las listas en matrices NumPy y luego aplicamos el algoritmo de clasificación a las listas. Ordenamos el array de la que depende la clasificación usando la función argsort() y luego usamos esos valores para filtrar la segunda matriz.

Vea el siguiente ejemplo.

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)

Producción :

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

Para obtener los datos finales en una lista, use la función tolist().

Utilice more_itertools.sort_together para ordenar la lista en función de otra lista en Python

El módulo more_itertools es una extensión del módulo itertools. La función sort_together devuelve los iterables de entrada ordenados juntos, con la lista en el argumento key_list como prioridad para la ordenación.

Por ejemplo,

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))

Producción :

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

Necesitamos usar la función list() para obtener el resultado final como una lista.

Artículo relacionado - Python List