Wie sortiert man ein Wörterbuch nach Schlüssel und Wert in Python?

Apr 2, 2020 – 4 min read

Hallo, alle. Heute werde ich kurze Tipps zum Sortieren von Wörterbüchern in Python (Python3) geben. Wie wir alle wissen, sind Wörterbücher von Natur aus ordnungslos, aber andere Typen, wie Listen und Tupel sind es nicht. Es ist nicht möglich, ein Wörterbuch zu sortieren, aber wir können eine Darstellung eines Wörterbuchs erstellen, die sortiert ist. Sie brauchen also einen geordneten Datentyp, um sortierte Schlüssel oder Werte darzustellen, und das wird eine Liste sein – wahrscheinlich eine Liste von Tupeln.

Wörterbuch in Python (Quelle)

Prozess der Sortierung von Wörterbüchern

Wie wir in der ersten Abbildung sehen können, sind Wörterbücher in Python ein Satz von Schlüssel-Wert-Paaren, wobei jedes Schlüssel-Wert-Paar ein Element genannt wird. Konzentrieren wir uns nun auf das Hauptproblem: Wörterbücher können nach Schlüsseln oder Werten sortiert werden. Wie in der zweiten Abbildung dargestellt, können wir keys(), values() und items() eines Wörterbuchs sortieren. Konzentrieren wir uns zunächst auf das Sortieren nach values().

Sortieren des Wörterbuchs nach Wert

Angenommen, wir haben ein Wörterbuch, das aus mehreren bekannten Organisationen als keys() und ihrem Gründungsjahr als values() besteht. Wir möchten also ein sortiertes Wörterbuch haben, in dem die älteste Organisation das erste Element und die jüngste Organisation das letzte Element ist.

d = {"Apple": 1976, "Microsoft":1975, "Facebook":2004, "Sony":1946, "IBM":1911, "Amazon": 1994 }

Wie wir im Wörterbuch d sehen können, ist IBM die älteste Organisation und wird daher der erste Schlüssel des sortierten Wörterbuchs sein und Facebook wird das letzte sein.

print(sorted(d.items(), key = lambda kv:kv))
print(sorted(d.items(), key = lambda kv:kv, reverse = True))
print(dict(sorted(d.items(), key = lambda kv:kv)))
sort_d = dict(sorted(d.items(), key = lambda kv:kv))
print(sort_d)

Ausgabe:



{'IBM': 1911, 'Sony': 1946, 'Microsoft': 1975, 'Apple': 1976, 'Amazon': 1994, 'Facebook': 2004}
{'IBM': 1911, 'Sony': 1946, 'Microsoft': 1975, 'Apple': 1976, 'Amazon': 1994, 'Facebook': 2004}

Da wir d.items() sortieren, handelt es sich um eine Liste von Tupeln, wobei keys()der erste Parameter und values()der zweite Parameter jedes Tupels sind. Für die Sortierung der Liste der Tupel haben wir die Werte, d.h. den zweiten Parameter jedes Tupels als Schlüssel gewählt. In der ersten Zeile wird der Schlüssel als eine lambdaFunktion definiert, wobei der Schlüsselwert der zweite Parameter der Elemente ist. Mit dieser Sortierung wird eine Liste sortierter Tupel erstellt. Wir können sie einfach in ein Wörterbuch umwandeln, indem wir die dict()-Funktion verwenden, wie in der dritten Codezeile gezeigt. Wir können die Sortierung auch umkehren, wodurch eine Liste von Tupeln entsteht, bei der das neueste Tupel an erster Stelle steht und das älteste Tupel das letzte Element ist, wie in der zweiten Zeile des Codes angegeben. Wir können das sortierte Wörterbuch auch unter einem anderen Namen speichern, wie oben gezeigt.

Sortieren des Wörterbuchs nach Schlüssel

print(sorted(d.items()))
print(dict(sorted(d.items())))
print(dict(sorted(d.items(), key = lambda kv:kv)))
print(sorted(d.items(), reverse = True))

Ausgabe:


{'Amazon': 1994, 'Apple': 1976, 'Facebook': 2004, 'IBM': 1911, 'Microsoft': 1975, 'Sony': 1946}
{'Amazon': 1994, 'Apple': 1976, 'Facebook': 2004, 'IBM': 1911, 'Microsoft': 1975, 'Sony': 1946}

Weil wir wissen, dass die keys() hier im Wörterbuch d Zeichenketten sind, wird durch das Sortieren nach Schlüssel eine Liste von Tupeln in alphabetischer Reihenfolge in den keys() jedes Elements erstellt und mit der Funktion dict() wird das Wörterbuch gebildet. Wir können auch die lambda Funktion verwenden, um den Schlüssel zu definieren, was fast unnötig ist, ich habe nur gezeigt, um einen Vergleich bei der Definition des Schlüssels bei der Sortierung zu machen.

Das war’s. Bitte besuchen Sie mein Profil, um mehr Geschichten über maschinelles Lernen und Datenanalyse zu erfahren. Jede Art von Vorschlägen und Kritik sind sehr willkommen. Hier sind meine früheren Beiträge, die auf einem von der Inha University, Rep of Korea, angebotenen Graduiertenkurs basieren:

Vorherige Beiträge:

Teil-1: Grundlegendes zu Python und Installation
Teil-2: Kapitel-2: Python Datenstruktur – Datentyp
Teil-3: Kontrollanweisungen (Schleifen) in Python
Teil:4: Python-Funktionen & Module
Teil:5: Objektorientiertes Programmieren in Python – Schafer & DataCamp.
Teil-6: Die Typen & Verfahren des Maschinellen Lernens
Teil-7: Feature Engineering für Maschinelles Lernen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.