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
Libérer: 2024-12-09 19:51:11
original
691 Les gens l'ont consulté

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]]
Copier après la connexion

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])
Copier après la connexion

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

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

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

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

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))
Copier après la connexion

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!

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