Seite 2 von 2

Verfasst: Dienstag 20. März 2007, 07:55
von Michael Schneider
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

Verfasst: Dienstag 20. März 2007, 11:12
von 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)