Trier la liste des tuples en Python en spécifiant l'ordre croissant / décroissant de plusieurs clés

Chose que tu veux faire

Lors du tri par SQL

Select * from table Order By key1 DESC, key2 ASC

Vous pouvez spécifier l’ordre croissant / décroissant de chaque clé comme dans.

En C / C ++ etc., vous pouvez faire de même en définissant vous-même la fonction de comparaison.

int compare(const MyStruct *a, const MyStruct *b)
{
    if(a->k1 == b->k1){
        return b->k2 - a->k2;
    }else{
        return a->k1 - b->k2;
    }
}

D'un autre côté, en Python, sort ne peut spécifier que la fonction clé et l'ordre croissant / décroissant de l'ensemble, alors que dois-je faire si je trie un tuple avec plusieurs éléments de cette manière?

Solution

C'était écrit dans le document officiel. https://docs.python.org/3/howto/sorting.html#sort-stability-and-complex-sorts

Sorts are guaranteed to be stable. That means that when multiple records have the same key, their original order is preserved.

This wonderful property lets you build complex sorts in a series of sorting steps. For example, to sort the student data by descending grade and then ascending age, do the age sort first and then sort again using grade

def multisort(xs, specs):
    for key, reverse in reversed(specs):
        xs.sort(key=lambda x: x[key], reverse=reverse)
    return xs

Puisque le tri Python est un tri stable, vous pouvez trier à plusieurs reprises en spécifiant l'ordre croissant / décroissant dans l'ordre à partir de la clé avec la priorité la plus basse. Je vois!!

Recommended Posts

Trier la liste des tuples en Python en spécifiant l'ordre croissant / décroissant de plusieurs clés
[python] Obtenez le rang des valeurs dans la liste par ordre croissant / décroissant
Lors de la spécification de plusieurs clés dans le tri python
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Python> Obtenir une liste de fichiers dans plusieurs répertoires> Utiliser glob | Trier par heure de modification
Trier les noms de fichiers obtenus par Python glob dans l'ordre numérique
Le tri du tableau de tuple peut être accéléré en spécifiant une clé (Python)
Je souhaite trier une liste dans l'ordre des autres listes
Comment trier en spécifiant une colonne dans le tableau Python Numpy.
Trier les éléments d'un tableau en spécifiant des conditions
Copiez la liste en Python
Rechercher par la valeur de l'instance dans la liste
Trier les éléments de la liste dans l'ordre spécifié en Python
[python] Récupère la liste des classes définies dans le module
[Python] Affiche toutes les combinaisons d'éléments de la liste
Regrouper par éléments consécutifs d'une liste en Python
[Python] Comment afficher les valeurs de liste dans l'ordre
Trier les fichiers mis à jour dans la période spécifiée par la commande find par ordre de taille
Tri décroissant avec mongodb en python
Trier par date en python
En Python, les éléments de la liste sont triés et sortis sous forme d'éléments et de multiples.
Implémentation de l'algorithme de "Algorithm Picture Book" en Python3 (Bubble Sort)
Obtenez le nombre d'éléments spécifiques dans la liste python
Trier le tableau de chaînes par ordre de longueur et syllabaire japonais
Implémentation de l'algorithme «Algorithm Picture Book» en Python3 (tri sélectif)
Extraire plusieurs doublons de liste en Python
[Python] Tri itérable selon plusieurs conditions
[Python] Afficher uniquement les éléments de la liste côte à côte [Vertical, horizontal]
[Compris dans la figure] Gestion de l'environnement virtuel Python par Pipenv
Lire la sortie standard d'un sous-processus ligne par ligne en Python
Supprimer plusieurs éléments dans la liste python
Trier en spécifiant les conditions dans CASTable
À propos de la liste de base des bases de Python
Extension de Python par C ou C ++ (lorsqu'il y a plusieurs arguments, lors du passage d'une liste du côté Python)
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Recevez une liste des résultats du traitement parallèle en Python avec starmap
Vérifiez le comportement du destroyer en Python
Afficher une liste d'alphabets en Python 3
Prenez la somme logique de List en Python (fonction zip)
Le résultat de l'installation de python sur Anaconda
Lisez le fichier ligne par ligne avec Python
Lisez le fichier ligne par ligne avec Python
Principes de base pour exécuter NoxPlayer en Python
Pandas du débutant, par le débutant, pour le débutant [Python]
Grammaire de base de la série Python3 (liste, tapple)
Résumé des méthodes intégrées, etc. de la liste Python
À la recherche du FizzBuzz le plus rapide en Python
Obtenir la liste de codes EDINET en Python
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
[Python] Précautions lors de l'acquisition de données en grattant et en les mettant dans la liste
traitement (python) Diagramme les coordonnées de la liste Spécifiez le nombre de fois dans draw ()
Divise la chaîne de caractères par le nombre de caractères spécifié. En Ruby et Python.
Obtenir l'heure Unix de l'heure spécifiée par JST quel que soit le fuseau horaire du serveur avec Python
[python] Comment trier par le Nth Mth élément d'un tableau multidimensionnel
Extraire des éléments (en utilisant une liste d'index) comme NumPy d'une liste / taple Python
Obtenez le dernier élément du tableau en fractionnant les chaînes en Python et PHP
Comment obtenir une liste de fichiers dans le même répertoire avec python
Sortie du nombre de cœurs de processeur en Python
[python] Vérifier les éléments de la liste tous, tous