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

Comment trier une liste de chaînes en fonction des valeurs entières correspondantes dans une autre liste ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-31 16:00:20248parcourir

How to Sort a List of Strings Based on Corresponding Integer Values in Another List?

Tri d'une liste à l'aide des valeurs correspondantes d'une autre liste

Étant donné deux listes, X contenant des chaînes et Y contenant des entiers, vous souhaitez trier X en fonction des valeurs correspondantes dans Y tout en préservant l'ordre d'origine des éléments avec la même valeur "clé". Explorez la solution optimisée suivante à l'aide des fonctions intégrées de Python :

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

Exemple :

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

Z = [x for _,x in sorted(zip(Y,X))]
print(Z)  # ["a", "d", "h", "b", "c", "e", "i", "f", "g"]

Explication :

  1. zip(Y, X) crée une liste de tuples, chacun contenant un élément de Y et l'élément correspondant de X.
  2. sorted(zip(Y, X)) trie la liste des tuples en fonction du premier élément (la valeur de Y).
  3. [x pour _, x dans sorted(. ..)] crée une nouvelle liste en parcourant la liste triée de tuples, en supprimant le premier élément (_) et en ne conservant que le deuxième élément (x).

Explication supplémentaire :

La fonction sorted() vous permet de spécifier une fonction clé qui détermine les critères de tri. Dans ce cas, nous utilisons key=lambda pair: pair[0] pour trier les tuples en fonction de leur premier élément. Cela trie efficacement X en fonction des valeurs correspondantes dans Y.

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