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.
Inhaltsverzeichnis
Grundlagen des Python-Wörterbuchs, überarbeitet
Was ist ein Python-Wörterbuch?
Dictionary ist eine eingebaute Datenstruktur in Python. Es speichert Elemente 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 BestelltDikt um die Reihenfolge der Tasten beizubehalten. Ab Python 3.7 können Sie jedoch in derselben Reihenfolge auf die Elemente zugreifen, 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.
⚙️ Hinweis: 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 Pythonoder führen Sie die Beispiele im wdzwdz Online Python Editor aus.
So sortieren Sie ein Python-Wörterbuch nach Schlüssel
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.
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 die Wörterbuch-Desserts erstellen, wie unten gezeigt.
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, in dem die Desserts in alphabetischer Reihenfolge angeordnet sind. Im Original-Dessertwö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 eingebaute Wörterbuchmethode .keys() verwenden, um eine Liste aller Schlüssel im Wörterbuch zu erhalten.
Rufen wir die .keys() -Methode im Dessert-Wörterbuch auf, um die Schlüssel abzurufen, wie unten gezeigt.
keys = desserts.keys() print(keys) #Output ['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies', 'Cup cake']
Der Aufruf von Pythons eingebauter sorted()-Funktion mit einer Liste als Argument gibt eine neue sortierte Liste zurück.
Als Nächstes rufen wir die Funktion sorted() mit den Listenschlüsseln als Argument auf und speichern 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, die den Schlüsseln entsprechen, in sorted_keys aus dem Desserts-Wörterbuch nachschlagen, 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 Sie sorted_desserts als leeres Python-Wörterbuch.
- Durchlaufen Sie die Schlüsselliste sorted_keys.
- Fügen Sie für jeden Schlüssel in sorted_keys einen Eintrag zu sorted_desserts hinzu, indem Sie den entsprechenden Wert im Dessertwörterbuch nachschlagen.
Die Verwendung der for-Schleife auf diese Weise wird 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 dem 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>}
Verwenden wir das zweite Konstrukt in der obigen Zelle: new_dict = {key:value for key in
In diesem Beispiel:
- iterable: die Liste sorted_keys
- key: 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 im Wörterbuch sorted_desserts in alphabetischer Reihenfolge angeordnet.
So sortieren Sie ein Python-Wörterbuch nach Wert
Als Nächstes lernen wir, wie man ein Python-Wörterbuch nach seinen Werten sortiert.
Im Dessertlexikon 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 .items() verwenden, 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
Dieses Mal verwenden wir die Funktion sorted() zusammen mit dem optionalen Schlüsselparameter. Schlüssel kann eine beliebige Python-Funktion, eine integrierte 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 setzen key = lambda item:item[1] da wir nach dem Wert (Preis) sortieren möchten.
Da die Funktion sorted() standardmäßig eine Liste zurückgibt, sollten Sie sie explizit in ein Diktat umwandeln, wie unten gezeigt.
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örterbuch Verständniswie 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}
Bei sorted_desserts ist Cup Cake zum Preis von 2 $ der erste Artikel und Brownies zum Preis von 12 $ 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 True setzen, 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 wurde sorted_desserts in absteigender Reihenfolge der Preise sortiert, beginnend mit den teuersten Dessert-Brownies, die 12 $ kosten.
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 Dictionary-Methoden .keys() und .items() verwenden, um alle Schlüssel bzw. Schlüssel-Wert-Paare abzurufen.
- Sie können die Funktion sorted() zusammen mit dem optionalen Parameter key und reverse verwenden, um die gewünschte Sortierung zu erreichen.
Nachdem Sie nun gelernt haben, wie man ein Python-Wörterbuch sortiert, lernen Sie, Python-Listen zu sortieren. Viel Spaß beim Programmieren!🎉