Wie man ein Python-Dictionary nach Wert sortiert

Jinku Hu 30 Januar 2023
  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
Wie man ein Python-Dictionary nach Wert sortiert

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.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - Python Dictionary