Maison >développement back-end >Tutoriel Python >Comment trier une liste de chaînes en fonction des valeurs dans une liste parallèle ?

Comment trier une liste de chaînes en fonction des valeurs dans une liste parallèle ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-14 22:15:14463parcourir

How to Sort a List of Strings Based on Values in a Parallel List?

Tri d'une liste en fonction des valeurs d'une liste parallèle

Considérez le scénario suivant : vous avez une liste de chaînes, X, et une liste de valeurs correspondante, Y . Votre tâche consiste à trier X en utilisant les valeurs de Y. Par exemple, étant donné :

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

Vous souhaitez obtenir le tri. sortie :

["a", "d", "h", "b", "c", "e", "i", "f", "g"]

Bien que les approches traditionnelles utilisant des boucles soient viables, une solution concise existe :

[x for _, x in sorted(zip(Y, X))]

Ce code :

  1. Zips les deux listes, Y et X, créant une liste de tuples : [(0, 'a'), (1, 'b'), ... (2, 'g')].
  2. Trie la liste compressée en utilisant les valeurs de Y comme clé de tri.
  3. Extrait la seconde élément de chaque tuple (les chaînes) en utilisant une compréhension de liste.

Le résultat est une liste triée de cordes dans l'ordre souhaité.

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