Seite 1 von 1

Verfasst: Freitag 6. März 2009, 17:58
von Nocta
Mal ne Frage, wenn ich dieses Defaultdict jetzt sortiert nach Häufigkeit ausgeben will, gibt es dann noch was einfacheres als dies hier?

Code: Alles auswählen

for i in sorted([(x, y) for x, y in counted.iteritems()], lambda x, y: y[1] - x[1]):
    print i[0], i[1]
Ich finde die Lösung zwar nicht schlecht und auch gut verständlich, aber vielleicht kann mir ja wieder jemand etwas neues aufzeigen, wie das so oft hier im Forum passiert.

Verfasst: Freitag 6. März 2009, 20:17
von lunar

Code: Alles auswählen

for key, item in sorted(counted.iteritems(), key=itemgetter(1)):
    print(key, item, sep=': ')
"itemgetter()" kommt aus dem "operator"-Modul.

Verfasst: Montag 9. März 2009, 15:20
von christine
Hallo,
ich sortiere meine Ausgabe auch:

Code: Alles auswählen

counted = defaultdict(int) 
for ergebnisWort in ergebnisListeDerAbfrage:
     counted[ergebnisWort] += 1 

sortierung = sorted((value, key) for (key, value) in counted.iteritems())
sortierung.reverse()
for key, value in sortierung:
     print "Treffer: %d %s" % (key, value)
Erhalte dann folgende Ausgabe:

Code: Alles auswählen

Treffer: 4 Bekleidungsgeschäfts 
Treffer: 2 Weisungsrecht 
Treffer: 2 Geschäftslokal 
Treffer: 2 Geschäfte 
Treffer: 1 Gewerbemiete 
Treffer: 1 Geschäftsraummietvertrag 
8)