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]]
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])
En utilisant cette fonction clé, la liste peut être triée comme suit :
s = sorted(s, key=key)
Alternativement, itemgetter () peut être utilisé pour obtenir le même résultat plus efficacement :
import operator key = operator.itemgetter(1, 2)
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)
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!