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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-19 08:30:10676parcourir

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

Tri des listes à l'aide des valeurs correspondantes d'une liste parallèle

Vous avez une liste de chaînes (X) et une liste correspondante d'entiers (Y ). Votre objectif est de trier les chaînes de la liste X en fonction des valeurs de la liste Y. Dans ce cas, le résultat souhaité est :

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

Solution de code la plus courte

Le moyen le plus court d'y parvenir est d'utiliser un liste compréhension avec les fonctions sorted et zip :

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

Ce code compresse les listes ensemble puis les trie en fonction des premiers éléments (les entiers de la liste Y). Il extrait ensuite les seconds éléments (les chaînes de la liste X) de la liste triée.

Exemple

Considérez les listes :

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

Utilisation du code :

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

Général Solution

Une solution plus générale consiste à utiliser la fonction triée avec une fonction clé personnalisée :

[x for _, x in sorted(zip(Y, X), key=lambda pair: pair[0])]

Ici, la fonction clé extrait le premier élément de chaque paire dans le fichier zippé list, vous permettant de trier en fonction des nombres entiers de la liste 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