Maison >développement back-end >Tutoriel Python >Comment trier des listes par plusieurs attributs en Python ?
Le tri des données est un aspect fondamental de nombreuses tâches de programmation. Lorsqu'il s'agit de structures de données complexes, il devient souvent nécessaire d'effectuer un tri en fonction de plusieurs attributs. Cet article aborde la question du tri d'une liste de listes en fonction de plusieurs critères.
L'extrait de code fourni montre une liste de listes, où chaque liste interne représente un objet avec divers attributs. Le but est de trier cette liste selon deux attributs : l'attribut "grand" ou "court" et l'attribut couleur.
Itemgetter est une fonction utile pour indexer plusieurs attributs dans un tuple. Il prend plusieurs indices comme arguments et renvoie une fonction qui extrait ces attributs d'un tuple donné. À l'aide d'itemgetter, vous pouvez créer une fonction clé qui prend en compte à la fois l'attribut « grand/court » et l'attribut couleur pour le tri :
import operator s = sorted(s, key = operator.itemgetter(1, 2))
Une autre façon de spécifier une fonction clé pour le tri consiste à utiliser des fonctions lambda. Les fonctions Lambda sont des fonctions anonymes qui peuvent être définies en ligne. La fonction lambda suivante renvoie un tuple des attributs « grand/court » et couleur :
s = sorted(s, key = lambda x: (x[1], x[2]))
En utilisant l'une de ces méthodes, vous pouvez trier la liste en fonction de plusieurs critères. Le résultat sera une liste de listes triées selon les attributs spécifiés.
Dans l'extrait de code donné, sorted est utilisé pour renvoyer une nouvelle liste triée. Cependant, vous pouvez également trier directement la liste elle-même à l'aide de la méthode sort. Cela modifiera la liste d'origine en place :
s.sort(key = operator.itemgetter(1, 2))
En utilisant les fonctions itemgetter ou lambda, vous pouvez définir des fonctions clés pour trier les listes selon plusieurs attributs. Cette technique est particulièrement utile lorsqu'il s'agit de structures de données complexes et peut simplifier le processus de tri.
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!