Liste -> Mehrfacheinträge eliminieren und zählen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Nocta
User
Beiträge: 290
Registriert: Freitag 22. Juni 2007, 14:13

Freitag 6. März 2009, 17:58

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.
lunar

Freitag 6. März 2009, 20:17

Code: Alles auswählen

for key, item in sorted(counted.iteritems(), key=itemgetter(1)):
    print(key, item, sep=': ')
"itemgetter()" kommt aus dem "operator"-Modul.
christine
User
Beiträge: 31
Registriert: Dienstag 24. Februar 2009, 10:03

Montag 9. März 2009, 15:20

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)
Antworten