häufigkeiten von strings

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.
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Wenn man es nicht direkt als String ausgeben möchte, hat natürlich Gerold mit seinen Tupeln den Vogel abgeschossen. :-)
Als Integer allein ohne den zugehörigen Wert bringt das nicht viel, dann muss man die ja wieder extra zuordnen.

(Zitat frei nach Gerold)

Code: Alles auswählen

words = ('bla', 'bla', 'blub', 'hallo', 'hallo', "z", "z", "hallo")
frequencies = dict()
for word in words:
    frequencies[word] = frequencies.get(word, 0) + 1
print sorted([ (value, key) for (key, value) in frequencies.items() ], reverse=True)
Diese dürfte nun wirklich zu den elegantesten und kürzesten Lösungen gehören (unabhängig davon, dass man die Deklarationen und die for-Schleife zusammenquetschen könnte.

Grüße,
Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
BlackJack

Noch eine Spur mehr "lazy" und ohne "umpacken" der Tupel:

Code: Alles auswählen

from operator import itemgetter

def get_most_occuring_values(iterable):
    histogram = dict()
    for item in iterable:
        histogram[item] = histogram.get(item, 0) + 1
    return sorted(histogram.iteritems(), key=itemgetter(1), reverse=True)
Antworten