Python: Sortieren von Dictionaries


Jens K

Mitglied
hallo,

ich hab ein Dictionary z.B:
Code:
dict = { "a"=1, "b"=5, "c"=3}

Ich möchte das jetzt gerne sortiert haben, nämlich nicht nach den Schlüsseln sonders nach den Werten. Also so dass ich zum Schluss

Code:
dict = { "a"=1, "c"=3, "b"=5}

habe.
 

Bexx

Verrückte Erfinderin bei Daniel Düsentrieb
Hallo,

kleiner nett gemeinter Tipp von mir, du lernst wesentlich mehr, wenn du es dir selber erarbeitest bzw. raussuchst.
:google: is your friend... :)

anyway, hier deine Funktion:

Code:
def sortedDictValues1(adict):
    items = adict.items()
    items.sort()
    return [value for key, value in items]
 

deepthroat

Erfahrenes Mitglied
Hi.
hallo,

ich erhalte dann aber eine Liste mit den values, ich möchte aber wieder mein dictionary haben
Ein Dictionary ist immer nach den Keys sortiert. Das ist ja gerade der Sinn eines "Wörterbuches".

\edit: Ich find das jetzt grad etwas lustig. :) Man stelle sich vor jemand geht in einen Buchladen und möchte ein Wörterbuch, das nicht nach den Stichworten sortiert ist, sondern nach den Definitionen aber trotzdem die Stichworte zuerst darstellt... ^^

Gruß

PS: @Bexx: Deine Funktion arbeitet nicht richtig. Es werden ja die (key, value) Paare primär nach dem key sortiert - und das war schließlich von Anfang an so.

PPS: @Jens K: Ich weiß ja nicht wozu du das haben wolltest, aber evtl. nützt dir ein Dictionary welches als Schlüssel die Werte des ersten Dictionaries hat? Übrigens "dict" ist bereits der Name des Typs "dict" von Python -- keine gute Idee dies als Variablennamen zu verwenden.
Python:
a_dict = { "a"=1, "b"=5, "c"=3}

another_dict = dict((v, k) for (k, v) in a_dict.items())
 
Zuletzt bearbeitet:

Thomas Darimont

Erfahrenes Mitglied
Hallo,

eine weitere Möglichkeit wäre:
Python:
>>> d = { "a":1, "b":5, "c":3}
>>> d
{'a': 1, 'c': 3, 'b': 5}
>>> for item in sorted(d.items(),key=lambda x: x[1]):
...    print item
...
('a', 1)
('c', 3)
('b', 5)

Gruß Tom
 
O

onlyfoo-na

Ein Dictionary ist erstmal überhaupt nicht nach so einem Kriterium sortiert

Python:
>>> dict(  pupsgesicht=22, hallowelt=12, ichbinmuede = 243 )
{'ichbinmuede': 243, 'hallowelt': 12, 'pupsgesicht': 22}