[Python-de] Dictionary sortieren
Stefan Behnel
behnel_ml at gkec.informatik.tu-darmstadt.de
Sam Nov 5 16:35:00 CET 2005
Torsten Rudolph schrieb:
> Hallo Liste,
Hallo Schreiber!
> ich habe ein Dictionary welches als Schlüssel beliebige Strings enthält
> und als Werte Zahlen.
>
> z.B. "abc" : "1"
> "def" : "5"
> "ghi" : "3"
>
> Dieses möchte ich sortiert nach den Werten ausgeben.
>
> z.B. "1 abc"
> "3 ghi"
> "5 def"
>
> Wie kann ich das realisieren. Eine sort() Funktion gibt es ja nicht.
Sowas vielleicht?
d = { ... }
pairs = sorted((value, key) for (key, value) in d.iteritems())
# Ausgabe
for value, key in pairs:
print "%d %s" % (value, key)
Funktioniert mit Py2.4, allerdings werden bei mehrfach vorhandenen Werten im
Dictionary auch die Schlüssel verglichen. Kannst du vermeiden mit
from itertools import count
next_i = count().next
triples = sorted((value, next_i(), key) for (key, value) in d.iteritems())
pairs = [ (t[0], t[1]) for t in triples ]
Gruß,
Stefan