Maison > développement back-end > Tutoriel Python > Comment puis-je trier efficacement une liste basée sur plusieurs attributs en Python ?

Comment puis-je trier efficacement une liste basée sur plusieurs attributs en Python ?

DDD
Libérer: 2024-12-11 18:02:13
original
343 Les gens l'ont consulté

How Can I Efficiently Sort a List Based on Multiple Attributes in Python?

Tri de liste multi-attributs

Le tri d'une liste en fonction d'un seul attribut est simple. Cependant, lorsque plusieurs attributs dictent l'ordre de tri, une approche plus complexe est nécessaire.

Considérez la liste de listes suivante :

[[12, 'tall', 'blue', 1],
[2, 'short', 'red', 9],
[4, 'tall', 'blue', 13]]
Copier après la connexion

Tri de cette liste uniquement par « grand » ou « L'attribut short' peut être obtenu en utilisant sorted(s, key = itemgetter(1)). Cependant, si l'ordre de tri doit être basé à la fois sur les attributs de hauteur et de couleur, une solution plus efficace est nécessaire.

Fonctions clés multi-attributs

Pour trier un liste par plusieurs attributs, une fonction clé peut être définie qui renvoie un tuple représentant l'ordre de tri souhaité. Par exemple, la fonction clé suivante trie d'abord par hauteur, puis par couleur :

key = lambda x: (x[1], x[2])
Copier après la connexion

En utilisant cette fonction clé, la liste peut être triée comme suit :

s = sorted(s, key=key)
Copier après la connexion

Alternativement, itemgetter () peut être utilisé pour obtenir le même résultat plus efficacement :

import operator
key = operator.itemgetter(1, 2)
Copier après la connexion

Cette fonction clé est à la fois plus rapide et n'implique pas de fonction Python call.

Tri direct

Enfin, l'approche ci-dessus peut être encore simplifiée en utilisant la méthode sort() au lieu de sorted() et en réaffectant. Cela élimine le besoin de créer une nouvelle liste :

s.sort(key=key)
Copier après la connexion

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal