Trier la liste par une autre liste en Python
-
Utilisez les fonctions
zip()
etsorted()
pour trier la liste en fonction d’une autre liste en Python -
Utilisez le module
NumPy
pour trier la liste en fonction d’une autre liste en Python -
Utilisez le
more_itertools.sort_together
pour trier la liste en fonction d’une autre liste en Python
Généralement, lorsque nous trions des listes, nous le faisons par ordre croissant ou décroissant. Cependant, nous pouvons trier une liste en fonction de l’ordre d’une autre liste en Python.
Nous allons apprendre à trier une liste donnée en fonction des valeurs d’une autre liste dans cet article.
Utilisez les fonctions zip()
et sorted()
pour trier la liste en fonction d’une autre liste en Python
Dans cette méthode, nous allons utiliser la fonction zip()
pour créer un troisième objet en combinant les deux listes données, la première qui doit être triée et la seconde dont dépend le tri.
On peut alors utiliser la fonction sorted()
, qui extrait les premiers éléments de chaque paire des listes données de la liste triée et zippée.
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)
Production:
['r', 'u', 'y', 's', 't', 'v', 'z', 'w', 'x']
Utilisez le module NumPy
pour trier la liste en fonction d’une autre liste en Python
Dans cette méthode, nous convertissons les listes en tableaux NumPy
puis appliquons l’algorithme de tri aux listes. Nous trions le tableau dont dépend le tri à l’aide de la fonction argsort()
, puis utilisons ces valeurs pour filtrer le deuxième tableau.
Voir l’exemple suivant.
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)
Production:
['r' 's' 's' 'r' 's' 't' 't' 'r' 's']
Pour obtenir les données finales dans une liste, utilisez la fonction tolist()
.
Utilisez le more_itertools.sort_together
pour trier la liste en fonction d’une autre liste en Python
Le module more_itertools
est une extension du module itertools
. La fonction sort_together
renvoie les itérables d’entrée triés ensemble, avec la liste dans l’argument key_list
comme priorité de tri.
Par exemple,
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))
Production:
['r', 'u', 'y', 's', 't', 'v', 'z', 'w', 'x']
Nous devons utiliser la fonction list()
pour obtenir le résultat final sous forme de liste.
Article connexe - Python List
- Convertir un dictionnaire en liste en Python
- Supprimer toutes les occurrences d'un élément d'une liste en Python
- Supprimer les doublons de la liste en Python
- Comment obtenir la moyenne d'une liste en Python
- Quelle est la différence entre les méthodes de liste append et extend
- Comment convertir une liste en chaîne de caractères en Python