2016-06-10 11 views
0

So habe ich den folgenden Code, um die Anzahl der Wörter in einer Textdatei zu zählen. Ich möchte die Ausgabe davon durch Wörter, die am häufigsten vorkommen, nach Wörtern sortieren, die am seltensten vorkommen. Wie kann dies erreicht werden?So sortieren Sie die Ausgabe einer Wortzählung

ally = open("alice.txt", "r") 
wordcount={} 
for word in ally.read().split(): 
    if word not in wordcount: 
     wordcount[word] = 1 

    else: 
     wordcount[word] += 1 

for k,v, in wordcount.items(): 
    print(k,v) 

Antwort

1

Sie können das Wörterbuch sortiert ansehen operator.itemgetter() mit:

from operator import itemgetter 

wordcount = {'test': 1, 'hello': 3, 'test2':0} 

sortedWords = sorted(wordcount.items(), key=itemgetter(1), reverse = True) 

Ausgang:

>>> sortedWords 
[('hello', 3), ('test', 1), ('test2', 0)] 
2

einfach Counter verwenden. Es wird sowohl Ihren Code verkürzen als auch Ihnen die gewünschte Bestellung geben.

Zitiert aus der Dokumentation:

Ein Zähler ist eine dict Unterklasse hashable Objekte zum Zählen. Es ist eine ungeordnete Sammlung, in der Elemente als Wörterbuchschlüssel gespeichert werden und ihre Zählungen als Wörterbuchwerte gespeichert werden. Counts dürfen beliebige Integerwerte einschließlich Null- oder Negativzählungen sein. Die Counter-Klasse ähnelt Taschen oder Multisets in anderen Sprachen.

>>> c = Counter(['eggs', 'ham']) 
>>> c['bacon']        # count of a missing element is zero 
0 
0

Dies sollte es für Sie tun: -

ally = open("alice.txt", "r") 
wordcount={} 
for word in ally.read().split(): 
    if word not in wordcount: 
     wordcount[word] = 1 
    else: 
     wordcount[word] += 1 

for k,v, in sorted(wordcount.items(), key=lambda words: words[1], reverse = True): 
    print(k,v)