Sortieren Sie die Liste der Tupel in Python, indem Sie die aufsteigende / absteigende Reihenfolge mehrerer Schlüssel angeben

Was du machen willst

Beim Sortieren nach SQL

Select * from table Order By key1 DESC, key2 ASC

Sie können die aufsteigende / absteigende Reihenfolge jedes Schlüssels wie in angeben.

In C / C ++ usw. können Sie dasselbe tun, indem Sie die Vergleichsfunktion selbst definieren.

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

Andererseits kann sort in Python nur die Schlüsselfunktion und die aufsteigende / absteigende Reihenfolge des Ganzen angeben. Was soll ich also tun, wenn ich ein Tupel mit mehreren Elementen auf diese Weise sortiere?

Lösungen

Es wurde im offiziellen Dokument geschrieben. 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

Da die Python-Sortierung eine stabile Sortierung ist, können Sie wiederholt sortieren, indem Sie die aufsteigende / absteigende Reihenfolge in der Reihenfolge des Schlüssels mit der niedrigsten Priorität angeben. Aha!!

Recommended Posts

Sortieren Sie die Liste der Tupel in Python, indem Sie die aufsteigende / absteigende Reihenfolge mehrerer Schlüssel angeben
[Python] Ermittelt den Rang der Werte in der Liste in aufsteigender / absteigender Reihenfolge
Wenn Sie mehrere Schlüssel in Python-Sortierung angeben
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Python> Eine Liste der Dateien in mehreren Verzeichnissen abrufen> Glob verwenden | Nach Änderungszeit sortieren
Sortieren Sie die von Python glob erhaltenen Dateinamen in numerischer Reihenfolge
Die Art des Tupel-Arrays kann durch Angabe des Schlüssels (Python) beschleunigt werden.
Ich möchte eine Liste in der Reihenfolge anderer Listen sortieren
Sortieren durch Angabe einer Spalte im Python Numpy-Array.
Sortieren Sie die Elemente eines Arrays, indem Sie Bedingungen angeben
Kopieren Sie die Liste in Python
Suchen Sie nach dem Wert der Instanz in der Liste
Sortieren Sie Listenelemente in Python in der angegebenen Reihenfolge
[Python] Ruft die Liste der im Modul definierten Klassen ab
[Python] Gibt alle Kombinationen von Elementen in der Liste aus
Gruppieren Sie nach aufeinanderfolgenden Elementen einer Liste in Python
[Python] So geben Sie Listenwerte der Reihe nach aus
Sortieren Sie die aktualisierten Dateien innerhalb des durch den Befehl find angegebenen Zeitraums in der Reihenfolge ihrer Größe
Absteigende Sorte mit Mongodb in Python
Sortieren nach Datum in Python
In Python werden die Elemente in der Liste sortiert und als Elemente und Vielfache ausgegeben.
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Bubble Sort)
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
Sortieren Sie das String-Array nach Länge und japanischer Silbe
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Selective Sort)
Extrahieren Sie mehrere Listenduplikate in Python
[Python] Sortierbar nach mehreren Bedingungen sortieren
[Python] Zeigt nur die Elemente der Liste nebeneinander an [Vertikal, horizontal]
[In der Abbildung verstanden] Verwaltung der virtuellen Python-Umgebung durch Pipenv
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python
Löschen Sie mehrere Elemente in der Python-Liste
Sortieren Sie nach Angabe der Bedingungen in CASTable
Informationen zur Grundlagenliste der Python-Grundlagen
Erweiterung von Python um C oder C ++ (wenn es mehrere Argumente gibt, wenn eine Liste von der Python-Seite übergeben wird)
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Erhalten Sie eine Liste der Ergebnisse der Parallelverarbeitung in Python mit Starmap
Überprüfen Sie das Verhalten des Zerstörers in Python
Zeigen Sie eine Liste der Alphabete in Python 3 an
Nehmen Sie die logische Summe von List in Python (Zip-Funktion)
Das Ergebnis der Installation von Python auf Anaconda
Lesen Sie die Datei Zeile für Zeile mit Python
Lesen Sie die Datei Zeile für Zeile mit Python
Grundlagen zum Ausführen von NoxPlayer in Python
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Grundlegende Grammatik der Python3-Reihe (Liste, Tapple)
Zusammenfassung der integrierten Methoden usw. der Python-Liste
Auf der Suche nach dem schnellsten FizzBuzz in Python
Ruft die EDINET-Codeliste in Python ab
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
[Python] Vorsichtsmaßnahmen beim Erfassen von Daten durch Scraping und Einfügen in die Liste
Verarbeitung (Python) Diagramm der Koordinaten der Liste Geben Sie an, wie oft in draw ()
Teilt die Zeichenfolge durch die angegebene Anzahl von Zeichen. In Ruby und Python.
Abrufen der Unix-Zeit der von JST angegebenen Zeit unabhängig von der Zeitzone des Servers mit Python
[Python] So sortieren Sie nach dem N-ten M-ten Element eines mehrdimensionalen Arrays
Extrahieren Sie Elemente (mithilfe einer Liste von Indizes) wie NumPy aus einer Python-Liste / einem Python
Holen Sie sich das letzte Element des Arrays, indem Sie Zeichenfolgen in Python und PHP aufteilen
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
Geben Sie die Anzahl der CPU-Kerne in Python aus
[Python] Checklistenelemente alle, alle