Maison >développement back-end >Tutoriel Python >Comment trier des listes par plusieurs attributs en Python ?

Comment trier des listes par plusieurs attributs en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-02 22:02:39893parcourir

How to Sort Lists by Multiple Attributes in Python?

Tri des listes par attributs multiples : un guide complet

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.

Utiliser Itemgetter pour le tri multi-critères

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))

Utilisation des fonctions Lambda pour la sélection des attributs clés

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.

Tri direct

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))

Conclusion

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!

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