Maison >développement back-end >Tutoriel Python >Comment les clés de tri peuvent-elles trier efficacement les listes en fonction de plusieurs attributs ?

Comment les clés de tri peuvent-elles trier efficacement les listes en fonction de plusieurs attributs ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-09 19:51:11656parcourir

How Can Sorting Keys Efficiently Sort Lists Based on Multiple Attributes?

Utiliser des clés de tri pour le tri multi-attributs des listes

Le tri d'une liste de listes en fonction d'attributs individuels est souvent simple. Cependant, lorsque plusieurs attributs sont impliqués, un dilemme se pose. Pouvons-nous trier efficacement sans plusieurs tours de tri ?

Pour relever ce défi, nous introduisons le concept de clés de tri. Une clé de tri agit comme une fonction qui attribue une valeur unique à chaque élément de la liste, déterminant l'ordre de tri.

Par exemple, dans la liste donnée :

[[12, 'tall', 'blue', 1],
[2, 'short', 'red', 9],
[4, 'tall', 'blue', 13]]

Pour trier par à la fois « grand/court » et « couleur », nous pouvons définir une fonction clé qui renvoie un tuple basé sur ces attributs :

key = lambda x: (x[1], x[2])

En utilisant cette clé, nous peut trier la liste à l'aide de la fonction sorted :

s = sorted(s, key = key)

Alternativement, nous pouvons exploiter la fonction itemgetter pour des performances plus rapides :

import operator
s = sorted(s, key = operator.itemgetter(1, 2))

De plus, nous pouvons trier directement la liste à l'aide de la fonction sort fonction avec la clé spécifiée :

s.sort(key = operator.itemgetter(1, 2))

Avec les clés triées, nous obtenons un tri multi-attributs efficace sans avoir besoin de tris multiples passe.

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
Article précédent:Packages tâche-PythonArticle suivant:Packages tâche-Python