wake-up-neo.com

Sortiere Dict nach Werten in Python 3.6+

Ich suchte nach einer Methode, um ein Wörterbuch in Python mit seinen Werten zu sortieren. Nach ein paar Versuchen ist es das, worauf es ankommt:

a = {<populated dict...>}
a = {v: k for k, v in a.items()}
a = {v: k for k, v in sorted(a.items())}

Dieser Code scheint zu funktionieren, aber ich denke, er ist schlecht für die Leistung. Gibt es einen besseren Weg?

3
Giuseppe

Sie müssen den doppelten Schlüssel-/Werteaustausch nicht durchführen. Sie können dies tun:

a = {k: v for k, v in sorted(a.items(), key=lambda x: x[1])}

( sortierte DOCS )

Testcode:

data = dict(a=1, b=3, c=2)
print(data)
data_sorted = {k: v for k, v in sorted(data.items(), key=lambda x: x[1])}
print(data_sorted)

Ergebnisse:

Ab CPython 3.6:

{'a': 1, 'b': 3, 'c': 2}
{'a': 1, 'c': 2, 'b': 3}
3
Stephen Rauch
from collections import OrderedDict

erstellen Sie andernfalls eine Liste mit Schlüsseln in der gewünschten Reihenfolge.

0
Schalton