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
Libérer: 2024-12-19 08:30:10
original
597 Les gens l'ont consulté

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))]
Copier après la connexion

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]
Copier après la connexion

Utilisation du code :

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

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])]
Copier après la connexion

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!

source:php.cn
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