Hallo Liste, 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. MfG Torsten -- Registered-Linux-User: #338573 (http://counter.li.org) _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
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 _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Stefan Behnel schrieb:
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 ]
Der Schönheit halber noch einer, diesmal anders herum: .>>> d = {1:10, 2:0, 3:5} .>>> from operator import itemgetter .>>> sorted(d.iteritems(), key=itemgetter(1)) [(2, 0), (3, 5), (1, 10)] Gruß, Stefan _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
On Sat, Nov 05, 2005 at 04:16:10PM +0100, Torsten Rudolph wrote:
Hallo Liste,
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.
Hallo, Diese L�sung funktioniert auch mit alten Python Versionen: decorated=[] for key, value in mydict.items(): decorated.append((value, key)) decorated.sort() for value, key in decorated: print value, key Siehe auch: http://www.thomas-guettler.de/vortraege/python/beispiele.py.txt Gru�, Thomas -- Thomas G�ttler, http://www.thomas-guettler.de/ E-Mail: guettli (*) thomas-guettler + de Spam Catcher: niemand.leermann@thomas-guettler.de _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (3)
-
guettli@thomas-guettler.de -
Stefan Behnel -
Torsten Rudolph