Ordenar lista por otra lista en Python
-
Utilice las funciones
zip()
ysorted()
para ordenar la lista en función de otra lista en Python -
Utilice el módulo
NumPy
para ordenar la lista en función de otra lista en Python -
Utilice
more_itertools.sort_together
para ordenar la lista en función de 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
- Convertir un diccionario en una lista en Python
- Eliminar todas las apariciones de un elemento de una lista en Python
- Eliminar duplicados de una lista en Python
- Cómo obtener el promedio de una lista en Python
- ¿Cuál es la diferencia entre los métodos de lista que añaden y amplían
- Cómo convertir una lista en cadena en Python