In diesem Tutorial erfahren Sie, wie Sie ein Python-Wörterbuch nach Schlüssel oder Wert sortieren.

Wenn Sie mit einem Wörterbuch in Python arbeiten, müssen Sie manchmal seinen Inhalt sortieren – nach Schlüssel oder nach Wert. Da ein Python-Wörterbuch eine Schlüssel-Wert-Zuordnung ist, erstellen Sie ein neues Wörterbuch, in dem die Schlüssel oder Werte nach Bedarf sortiert sind.

In diesem Tutorial beginnen wir mit der Wiederholung der Grundlagen des Python-Wörterbuchs. Anschließend lernen wir, ein neues Wörterbuch zu erstellen, in dem die Inhalte je nach Bedarf nach Schlüssel oder Wert sortiert sind.

Python Dictionary Basics, Revisited

Was ist ein Python-Wörterbuch?

Dictionary ist eine eingebaute Datenstruktur in Python. Es speichert Artikel als Schlüssel-Wert-Paare. Mit den Tasten können Sie die entsprechenden Werte nachschlagen. Da die Schlüssel die Werte eindeutig identifizieren, sollte es keine Wiederholung von Schlüsseln geben.

py_dict = {"Python":"cool!","Learn":True}
py_dict["Python"]
# Output: cool!

py_dict["Learn"]
# Output: True

Funktional ähnelt ein Wörterbuch einer Hash-Map. Daher ist es nicht notwendigerweise eine geordnete Datenstruktur. Sie können in beliebiger Reihenfolge auf den Inhalt eines Wörterbuchs zugreifen, solange Sie die Schlüssel kennen.

Ordnen von Elementen in einem Wörterbuch

In früheren Versionen von Python mussten Sie eine verwenden BestelltDict um die Reihenfolge der Tasten beizubehalten. Ab Python 3.7 können Sie jedoch auf die Elemente in zugreifen gleich Reihenfolge, in der Sie sie dem Wörterbuch hinzufügen. 

Nachdem Sie nun die Grundlagen von Python-Wörterbüchern erlernt haben, lernen wir, wie Sie sortierte Kopien des Wörterbuchs erstellen.

⚙️ HinweisHinweis: Sie benötigen Python 3.7 oder höher, damit der Code in diesem Tutorial wie erwartet funktioniert. Sie können die herunterladen neuste Version von Python, oder führen Sie die Beispiele in aus Geekflare Online-Python-Editor.

How to Sort a Python Dictionary by Key

Sehen Sie sich das folgende Bild der Dessertkarte in einem Café an. Es gibt zwei Spalten, die den Artikeln auf der Speisekarte und ihren jeweiligen Preisen entsprechen.

Python-Wörterbuch-aus-Daten

Sie können dies in Form eines Python-Wörterbuchs darstellen, indem Sie die Namen von Artikeln als Schlüssel und ihre Preise als Werte sammeln.

Lassen Sie uns fortfahren und das Wörterbuch erstellen desserts, Wie nachfolgend dargestellt.

desserts = {
    "Ice cream":10,
    "Brownies":12,
    "Cheesecake":3,
    "Swiss roll":5,
    "Cookies":4,
    "Cup cake":2
}

Als nächstes erstellen wir ein Wörterbuch sorted_desserts, wo die Desserts in alphabetischer Reihenfolge angeordnet sind. Im Original desserts Wörterbuch sind die Namen der Desserts die Schlüssel. Sie sollten diese Schlüssel also in alphabetischer Reihenfolge sortieren, um ein neues Wörterbuch zu erstellen.

So greifen Sie auf die Schlüssel eines Python-Wörterbuchs zu

Dazu holen wir uns zunächst die Schlüssel des Wörterbuchs und sortieren sie dann in alphabetischer Reihenfolge.

In Python können Sie die integrierte Wörterbuchmethode verwenden .keys() um eine Liste aller Schlüssel im Wörterbuch zu erhalten.

Nennen wir die .keys() Methode auf der dessert Wörterbuch, um die Schlüssel abzurufen, wie unten gezeigt.

keys = desserts.keys()
print(keys)

#Output
['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies', 
'Cup cake']

Aufrufen von Pythons eingebautem sorted() Funktion mit einer Liste als Argument gibt eine neue sortierte Liste zurück.

Als nächstes rufen wir die an sorted() Funktion mit der Liste keys als Argument und speichern Sie die sortierte Liste in der Variablen sorted_keys.

sorted_keys = sorted(keys)
print(sorted_keys)

# Output
['Brownies', 'Cheesecake', 'Cookies', 'Cup cake', 'Ice cream', 'Swiss roll']

Nachdem wir die Schlüssel in alphabetischer Reihenfolge sortiert haben, können wir die Werte nachschlagen, die den Schlüsseln in entsprechen sorted_keys von dem desserts Wörterbuch, wie unten gezeigt.

sorted_desserts = {}
for key in sorted_keys:
  sorted_desserts[key] = desserts[key]

print(sorted_desserts)

# Output
{'Brownies': 12, 'Cheesecake': 3, 'Cookies': 4, 'Cup cake': 2, 
'Ice cream': 10, 'Swiss roll': 5}

Lassen Sie uns den obigen Codeblock erweitern:

  • Initialisieren sorted_desserts ein leeres Python-Wörterbuch sein.
  • Durchlaufen Sie die Schlüsselliste sorted_keys.
  • Für jede Taste sorted_keys, fügen Sie einen Eintrag hinzu sorted_desserts indem Sie den entsprechenden Wert in der nachschlagen desserts Wörterbuch.

Verwendung der for Schleifen wie diese werden als ausführlich angesehen. In Python gibt es eine prägnantere Alternative, die das Wörterbuchverständnis verwendet.

Wörterbuchverständnis in Python

Python unterstützt die Verwendung des Wörterbuchverständnisses, ähnlich wie Listenverständnis. Mit Dictionary Comprehension können Sie mit nur einer Codezeile ein neues Python-Wörterbuch erstellen.

▶️ Hier ist das allgemeine Konstrukt zur Verwendung des Wörterbuchverständnisses in Python.

# 1. when you have both keys and values in two lists: list1, list2
new_dict = {key:value for key,value in zip(list1,list2)}

# 2. when you have the keys, and can look up the values
new_dict = {key:value for key in <iterable>}

Lassen Sie uns das zweite Konstrukt in der obigen Zelle verwenden: new_dict = {key:value for key in <iterable>} ein erstellen sorted_desserts Wörterbuch.

In diesem Beispiel:

  • wiederholbar: Die Liste sorted_keys
  • Schlüssel: Der Schlüssel, auf den wir zugreifen, indem wir sorted_keys durchlaufen
  • Wert: Suchen Sie den Wert, der dem Schlüssel entspricht, aus dem Desserts-Wörterbuch, desserts[key]

Alles zusammengenommen haben wir den Ausdruck für Wörterbuchverständnis, wie unten gezeigt.

sorted_desserts = {key:desserts[key] for key in sorted_keys}
print(sorted_desserts)

{'Brownies': 12, 'Cheesecake': 3, 'Cookies': 4, 'Cup cake': 2, 
'Ice cream': 10, 'Swiss roll': 5}

Aus der obigen Ausgabe sind die Desserts in alphabetischer Reihenfolge geordnet sorted_desserts Wörterbuch.

How to Sort a Python Dictionary by Value

Als Nächstes lernen wir, wie man ein Python-Wörterbuch nach seinen Werten sortiert.

In den desserts Wörterbuch entsprechen die Werte den Preisen der Desserts. Sie können das Wörterbuch nach Preisen sortieren, entweder in aufsteigender oder absteigender Reihenfolge.

▶️ Sie können die integrierte Wörterbuchmethode verwenden .items() um alle Schlüssel-Wert-Paare zu erhalten. Jedes Tupel ist ein Schlüssel-Wert-Paar.

desserts.items()

dict_items([('Ice cream', 10), ('Brownies', 12), ('Cheesecake', 3), 
('Swiss roll', 5), ('Cookies', 4), ('Cup cake', 2)])

Jedes der Elemente ist ein Tupel für sich. Sie können also auch in jedes Schlüssel-Wert-Paar indizieren, um auf die Schlüssel und Werte einzeln zuzugreifen.

dict_items = desserts.items()
for item in dict_items:
  print(f"key:{item[0]},value:{item[1]}")

# Output
key:Ice cream,value:10
key:Brownies,value:12
key:Cheesecake,value:3
key:Swiss roll,value:5
key:Cookies,value:4
key:Cup cake,value:2

Da wir nach Werten sortieren möchten, verwenden wir die obige Methode, um den Wert an Index 1 im Schlüssel-Wert-Paar zu erhalten.

So sortieren Sie die Werte eines Python-Wörterbuchs in aufsteigender Reihenfolge

Diesmal verwenden wir die sorted() Funktion zusammen mit der optionalen key Parameters. key kann jede Python-Funktion, eine eingebaute Funktion, eine benutzerdefinierte Funktion oder sogar eine sein Lambda-Funktion.

Hinweis: lambda args: expression ist die Syntax zum Definieren von Lambda-Funktionen in Python.

In diesem Beispiel zum Sortieren von Desserts nach Preis haben wir Zugriff auf Wörterbuchelemente (Schlüssel-Wert-Paare). Wir werden setzen key = lambda item:item[1] da wir nach dem Wert (Preis) sortieren möchten.

As sorted() Funktion gibt standardmäßig eine Liste zurück, Sie sollten sie explizit in a umwandeln dict, Wie nachfolgend dargestellt.

sorted_desserts = dict(sorted(desserts.items(), key=lambda item:item[1]))
print(sorted_desserts)

{'Cup cake': 2, 'Cheesecake': 3, 'Cookies': 4, 'Swiss roll': 5, 
'Ice cream': 10, 'Brownies': 12}

Sie können auch mit umschreiben Wörterbuchverständnis, wie vorhin besprochen.

sorted_desserts = {key:value for key, value in sorted(desserts.items(), 
key=lambda item:item[1])}

print(sorted_desserts)

# Output
{'Cup cake': 2, 'Cheesecake': 3, 'Cookies': 4, 'Swiss roll': 5, 
'Ice cream': 10, 'Brownies': 12}

In sorted_desserts, Cup Cake zum Preis von 2 $ ist der erste Artikel und Brownies Preis bei 12 $ ist der letzte Artikel.

So sortieren Sie die Werte eines Python-Wörterbuchs in absteigender Reihenfolge

Wenn Sie die Preise in absteigender Reihenfolge sortieren möchten, können Sie den optionalen reverse-Parameter auf setzen True, wie unten erläutert.

sorted_desserts = dict(sorted(desserts.items(), key=lambda item:item[1], 
reverse=True))
print(sorted_desserts)

# Output
{'Brownies': 12, 'Ice cream': 10, 'Swiss roll': 5, 'Cookies': 4, 
'Cheesecake': 3, 'Cup cake': 2}

Jetzt, sorted_desserts ist nach absteigendem Preis sortiert, beginnend mit dem teuersten Dessert Brownies kostet $12.

Abschluss 👩🏽‍💻

Lassen Sie uns kurz alles zusammenfassen, was wir in diesem Tutorial gelernt haben.

  • Ein Python-Wörterbuch speichert Daten in Schlüssel-Wert-Paaren; Die Schlüssel sollten alle eindeutig sein.
  • Beim Sortieren eines Wörterbuchs nach Schlüssel oder Wert erstellen wir ein neues Wörterbuch, das nach Bedarf sortiert wird.
  • Sie können die integrierten Wörterbuchmethoden verwenden, .Schlüssel() und .Produkte() um alle Schlüssel bzw. Schlüssel-Wert-Paare abzurufen.
  • Sie können die Verwendung sortiert () Funktion zusammen mit den optionalen Parametern Schlüssel und rückgängig machen um die gewünschte Sortierung zu erreichen.

Nachdem Sie nun gelernt haben, wie man ein Python-Wörterbuch sortiert, lernen Sie es Python-Listen sortieren. Viel Spaß beim Programmieren!🎉