Wie man ein Python-Wörterbuch nach Wert sortiert

  1. Python-Sortierwörterbuch nach Wert - Nur die sortierten Werte erhalten
  2. Verwenden von operator.itemgetter zum Sortieren des Python-Wörterbuchs
  3. Verwendung der Funktion lambda im Schlüssel von sorted zum Sortieren des Wörterbuchs in Python
  4. OrderedDict, um das wörterbuch-kompatible Ergebnis bei der Python-Wörterbuchsortierung zu erhalten

Das Python-Wörterbuch ist ein ordnungsloser Datentyp, daher konnten Sie das Python-Wörterbuch nicht nach seinen Schlüsseln oder Werten sortieren. Aber Sie könnten die Darstellung des sortierten Python-Wörterbuchs in anderen Datentypen wie list erhalten.

Angenommen, wir haben ein Wörterbuch wie unten,

exampleDict = {'first': 3, 'second': 4, 'third': 2, 'fourth': 1}

Python-Sortierwörterbuch nach Wert - Nur die sortierten Werte erhalten

sortedDict = sorted(exampleDict.values())
#Out: [1, 2, 3, 4]

Verwenden von operator.itemgetter zum Sortieren des Python-Wörterbuchs

import operator
sortedDict = sorted(exampleDict.items(), key=operator.itemgetter(1))
#Out: [('fourth', 1), ('third', 2), ('first', 3), ('second', 4)]

exampleDict.items gibt das Schlüssel-Werte-Paar der Dictionary-Elemente zurück. key=operator.itemgetter(1) gibt an, dass der Vergleichsschlüssel der Wert des Dictionarys ist, während operator.itemgetter(0) den Vergleichsschlüssel des Dictionaryschlüssels hat.

Verwendung der Funktion lambda im Schlüssel von sorted zum Sortieren des Wörterbuchs in Python

Sie könnten auch die Funktion lambda verwenden, um den Vergleichsschlüssel statt operator.itemgetter zu erhalten.

sortedDict = sorted(exampleDict.items(), key=lambda x: x[1])
#Out: [('fourth', 1), ('third', 2), ('first', 3), ('second', 4)]

exampleDict.items() gibt eine Liste von Schlüssel-Werte-Paaren des Dictionarys zurück und der Datentyp des Elements ist Tupel. x ist das Element dieses Tupels, wobei x[0] der Schlüssel und x[1] der Wert ist. key=lambda x:x[1] gibt an, dass der Vergleichsschlüssel der Wert der Dictionary-Elemente ist.

Der optionale Parameter Reverse könnte auf True gesetzt werden, wenn die Werte in absteigender Reihenfolge sortiert werden sollen.

sortedDict = sorted(exampleDict.items(), key=lambda x: x[1], reverse=True)
#Out: [('second', 4), ('first', 3), ('third', 2), ('fourth', 1)]

OrderedDict, um das wörterbuch-kompatible Ergebnis bei der Python-Wörterbuchsortierung zu erhalten

Der oben gezeigte Beispielcode gibt das Ergebnis als Liste, aber nicht als Wörterbuchtyp zurück. Wenn Sie das Ergebnis als wörterbuchkompatibler Typ erhalten wollen, ist OrderedDict, das seit Python 2.7 eingeführt wurde, die richtige Wahl.

from collections import OrderedDict
sortedDict = OrderedDict(sorted(exampleDict.items(), key=lambda x: x[1]))
#Out: OrderedDict([('fourth', 1), ('third', 2), ('first', 3), ('second', 4)])

Die Unterklasse OrderedDict ist eine Python-Dict Unterklasse, die die üblichen Methoden unterstützt und sich auch die Reihenfolge merkt, in der die Schlüssel zuerst eingefügt werden.

Verwandter Artikel - Python dictionary

  • Wie man Wörterbuchschlüssel als Liste in Python erhält
  • comments powered by Disqus