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
Mary-Kate Olsenoriginal
2024-12-22 11:43:10572parcourir

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

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']

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