Python >> Python Tutorial >  >> Python

Wie sortiere ich ein Wörterbuch nach Wert in Python?

Zusammenfassung: Verwenden Sie eine der folgenden Methoden, um ein Wörterbuch nach Wert zu sortieren:

  1. Verwendung von sorted(dict1, key=dict1.get) Methode.
  2. Verwendung von Wörterbuchverständnis Und Lambda Mit sorted() Methode.
  3. Verwendung von OrderedDict (Für ältere Versionen von Python).
  4. Mit itemgetter() mit sorted() Methode.
  5. Verwendung von Zähler Unterklasse.

Problem: Gegeben ein Wörterbuch; wie kann man es nach Werten sortieren?

Beispiel: Das folgende Beispiel zeigt ein Wörterbuch mit dem Namen rank die die Namen von Personen als Schlüssel speichert, während ihre entsprechenden Ränge die Werte darstellen. Wir werden dieses Beispiel als Referenz verwenden, während wir die Lösungen diskutieren.

rank = {
  'Bob': 2,
  'Alice': 4,
  'Sharon': 5,
  'Dwyane': 1,
  'John': 3
}

# Some Procedure to Sort the Dictionary by its Values

Ausgabe:

{'Dwyane': 1, 'Bob': 2, 'John': 3, 'Alice': 4, 'Sharon': 5}

Bevor wir uns mit den Lösungen befassen, hier ein paar zu beachtende Punkte über Wörterbücher:

  • Ab Python 3.7 werden Python-Wörterbücher geordnet (Einfügung wird ebenfalls geordnet). Das bedeutet, dass die Reihenfolge, in der die Schlüssel in Wörterbücher eingefügt werden, erhalten bleibt.
  • Im normalen Szenario führt das Sortieren von Wörterbüchern zu einem sortierten Wörterbuch in Bezug auf seine Schlüssel.

Um einen besseren Einblick in Python-Wörterbücher zu erhalten, folgen Sie bitte unserem Blog-Tutorial zu Wörterbüchern hier . Der Zweck dieses Artikels besteht jedoch lediglich darin, Sie durch die zahlreichen Methoden zu führen, um ein Wörterbuch basierend auf den Werten anstelle der Schlüssel zu sortieren. Lassen Sie uns also ohne weitere Verzögerung in die Lösungen eintauchen.

➤ Hier ist ein kurzer Überblick über alle Methoden, die in diesem Artikel verwendet werden. Bitte folgen Sie der Diashow unten:

Methode 1:Verwenden von sorted(dict1, key=dict1.get) Methode

Der sorted() method ist eine eingebaute Methode in Python, die verwendet wird, um die Elemente eines Iterables in einer bestimmten Reihenfolge zu sortieren (aufsteigend oder absteigend ). Nach dem Sortieren der Elemente gibt es die sortierte Reihenfolge in Form einer sortierten Liste zurück.

Syntax:

Um das Wörterbuch anhand der Werte zu sortieren, können wir die Leistungsfähigkeit von sorted() nutzen Funktion. Um das Wörterbuch basierend auf dem Wert zu sortieren, können wir get() verwenden -Methode und übergeben Sie sie an key Argument von sorted() Funktion.

Lassen Sie uns einen Blick auf den folgenden Code werfen, um die Verwendung von sorted zu verstehen Funktion, um unser Problem zu lösen:

rank = {
  'Bob': 2,
  'Alice': 4,
  'Sharon': 5,
  'Dwyane': 1,
  'John': 3
}

for w in sorted(rank, key=rank.get):
    print(w, rank[w])

Ausgabe:

Dwyane 1
Bob 2
John 3
Alice 4
Sharon 5

Um das Wörterbuch anhand seiner Werte in umgekehrter Reihenfolge zu sortieren, müssen wir reverse angeben Argument als true , also

rank = {
  'Bob': 2,
  'Alice': 4,
  'Sharon': 5,
  'Dwyane': 1,
  'John': 3
}

for w in sorted(rank, key=rank.get, reverse=True):
    print(w, rank[w])

Ausgabe:

Sharon 5
Alice 4
John 3
Bob 2
Dwyane 1

Methode 2:Verwendung von Wörterbuchverständnis Und Lambda Mit sorted() Methode

Wenn Sie Python 3.6 und höher verwenden, kann unser Problem in einer einzigen Zeile mithilfe eines Wörterbuchverständnisses und einer Lambda-Funktion innerhalb des sorted gelöst werden Methode. Dies ist eine effiziente und übersichtliche Lösung, um Wörterbücher nach ihren Werten zu sortieren.

⦿ Wörterbuchverständnis ist eine prägnante und speichereffiziente Methode zum Erstellen und Initialisieren von Wörterbüchern in einer Zeile Python-Code. Es besteht aus zwei Teilen:Ausdruck und Kontext. Der Ausdruck definiert, wie Schlüssel Werten zugeordnet werden. Der Kontext durchläuft eine Iterable mit einer einzeiligen for-Schleife und definiert, welche Paare (Schlüssel, Wert) in das neue Wörterbuch aufgenommen werden sollen. Um mehr über Wörterbuchverständnisse in Python zu erfahren, schauen Sie sich unser Blog-Tutorial hier an.

Lassen Sie uns nun einen Blick auf den folgenden Code werfen, der die Verwendung von Wörterbuchverständnissen erklärt, um unser Problem in einer einzigen Codezeile zu lösen.

rank = {
  'Bob': 2,
  'Alice': 4,
  'Sharon': 5,
  'Dwyane': 1,
  'John': 3
}

print({k: v for k, v in sorted(rank.items(), key=lambda item: item[1])})

Ausgabe:

{'Dwyane': 1, 'Bob': 2, 'John': 3, 'Alice': 4, 'Sharon': 5}

Methode 3:Verwenden von OrderedDict (Für ältere Versionen von Python)

Wörterbücher sind für Versionen vor Python 3.7 im Allgemeinen ungeordnet, sodass es nicht möglich ist, ein Wörterbuch direkt zu sortieren. Um diese Einschränkung zu überwinden, müssen wir daher das OrderedDict verwenden Unterklasse.

⦿ Ein OrderedDict ist eine Dictionary-Unterklasse, die die Reihenfolge beibehält, in der Schlüsselwerte in ein Dictionary eingefügt werden. Es ist in den collections enthalten Modul in Python.

Lassen Sie uns einen Blick darauf werfen, wie wir OrderedDict verwenden können um Wörterbücher in früheren Python-Versionen zu ordnen und zu sortieren.

from collections import OrderedDict
rank = {
  'Bob': 2,
  'Alice': 4,
  'Sharon': 5,
  'Dwyane': 1,
  'John': 3
}
a = OrderedDict(sorted(rank.items(), key=lambda x: x[1]))
for key,value in a.items():
  print(key, value)

Ausgabe:

('Dwyane', 1)
('Bob', 2)
('John', 3)
('Alice', 4)
('Sharon', 5)

Methode 4:Verwenden von itemgetter() Mit der sorted() Methode

⦿ itemgetter() ist eine eingebaute Funktion des operator Modul, das ein aufrufbares Element erstellt, das ein iterierbares Element wie eine Liste, ein Tupel, eine Menge usw. als Eingabe akzeptiert und das n te abruft Element daraus.

Beispiel:

from operator import itemgetter

rank = {
  'Bob': 2,
  'Alice': 4,
  'Sharon': 5,
  'Dwyane': 1,
  'John': 3
}

a = sorted(rank.items(), key=itemgetter(1))
print(dict(a))

Ausgabe:

{'Dwyane': 1, 'Bob': 2, 'John': 3, 'Alice': 4, 'Sharon': 5}

Im obigen Beispiel a speichert eine Liste von Tupeln. Deshalb haben wir es in ein dictionary umgewandelt ausdrücklich beim Drucken.

Methode 5:Verwendung von Counter

Zähler ist eine Dictionary-Unterklasse, die zum Zählen hashfähiger Objekte verwendet wird. Da die von uns verwendeten Werte Ganzzahlen sind, können wir den Counter verwenden Klasse, um sie zu sortieren. Der Counter Klasse muss aus dem Collections-Modul importiert werden.

Haftungsausschluss: Dies ist eine Problemumgehung für das vorliegende Problem und passt möglicherweise nicht in jede Situation. Da die Werte des Wörterbuchs in unserem Fall ganze Zahlen sind, ist der Zähler Unterklasse passt als Lösung für unser Problem. Betrachten Sie es als Bonustrick!?

from collections import Counter

rank = {
  'Bob': 2,
  'Alice': 4,
  'Sharon': 5,
  'Dwyane': 1,
  'John': 3
}

count = dict(Counter(rank).most_common())
print(count)

Ausgabe:

{'Dwyane': 1, 'Bob': 2, 'John': 3, 'Alice': 4, 'Sharon': 5}

⦿ Im obigen Programm die Methode most_common() wurde verwendet, um alle Elemente im Zähler zurückzugeben.

Schlussfolgerung

In diesem haben wir die folgenden Methoden kennengelernt, um ein Wörterbuch nach Werten in Python zu sortieren:

  • Verwendung von sorted(dict1, key=dict1.get) Methode.
  • Verwendung von Wörterbuchverständnis Und Lambda Mit sorted() Methode.
  • Verwendung von OrderedDict (Für ältere Versionen von Python).
  • Mit itemgetter() mit sorted() Methode.
  • Verwendung von Zähler Unterklasse.

Ich hoffe, nachdem Sie diesen Artikel gelesen haben, können Sie Wörterbücher problemlos nach ihren Werten sortieren. Bitte abonnieren Sie und bleiben Sie dran für weitere interessante Artikel in der Zukunft.