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

Beitragvon Nocta » 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

Beitragvon 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

Beitragvon christine » 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)

Wer ist online?

Mitglieder in diesem Forum: __deets__