Maison > développement back-end > Tutoriel Python > Comment puis-je trier une liste en fonction des valeurs d'une liste correspondante ?

Comment puis-je trier une liste en fonction des valeurs d'une liste correspondante ?

Mary-Kate Olsen
Libérer: 2024-12-22 11:43:10
original
649 Les gens l'ont consulté

How Can I Sort One List Based on the Values of a Corresponding List?

Tri d'une liste par valeurs correspondantes à partir d'une liste parallèle

Dans ce scénario, vous avez deux listes, X et Y, où chaque élément dans Y correspond à une valeur associée à l'élément dans X. Votre objectif est de trier la liste X en fonction des valeurs de la liste Y.

Une approche efficace pour y parvenir, il faut utiliser une compréhension de liste avec les fonctions zip() et sorted() :

[x for _, x in sorted(zip(Y, X))]
Copier après la connexion

Décomposons cet extrait de code :

  1. zip (Y, X) : Cela crée une liste de tuples, où chaque tuple contient les éléments correspondants des listes Y et X.
  2. sorted(... , key=lambda pair: pair[0]) : Ceci trie la liste de tuples générée en fonction du premier élément de chaque tuple (les valeurs de la liste Y).
  3. [x for _, x in ...] : Enfin, une compréhension de liste est utilisée pour extraire les seconds éléments de chaque tuple trié, qui vous donne les valeurs X correspondantes dans l'ordre trié.

Exemple :

X = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
Y = [ 0,   1,   1,   0,   1,   2,   2,   0,   1 ]

result = [x for _, x in sorted(zip(Y, X))]
print(result)  # ['a', 'd', 'h', 'b', 'c', 'e', 'i', 'f', 'g']
Copier après la connexion

Ce code affichera la liste triée selon le valeurs correspondantes dans la liste Y : ["a", "d", "h", "b", "c", "e", "i", "f", "g"].

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal