Wie man ein Python-Dictionary nach Wert sortiert

  1. Python-SortierDictionary nach Wert - Nur die sortierten Werte erhalten
  2. Verwenden von operator.itemgetter zum Sortieren des Python-Dictionaries
  3. Verwendung der Funktion lambda im Schlüssel von sorted zum Sortieren des Dictionaries in Python
  4. OrderedDict, um das Dictionary-kompatible Ergebnis bei der Python-Dictionariesortierung zu erhalten

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

Angenommen, wir haben ein Dictionary wie unten,

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

Python-SortierDictionary nach Wert - Nur die sortierten Werte erhalten

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

Verwenden von operator.itemgetter zum Sortieren des Python-Dictionaries

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 Dictionaries ist, während operator.itemgetter(0) den Vergleichsschlüssel des Dictionarieschlüssels hat.

Verwendung der Funktion lambda im Schlüssel von sorted zum Sortieren des Dictionaries 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 Dictionaries 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 Dictionary-kompatible Ergebnis bei der Python-Dictionariesortierung zu erhalten

Der oben gezeigte Beispielcode gibt das Ergebnis als Liste, aber nicht als Dictionarytyp zurück. Wenn Sie das Ergebnis als Dictionarykompatibler 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

  • Dictionary in JSON speichern in Python
  • Dictionary aufzählen in Python