2013-12-14 69 views
2

我有我從一個網址導入的txt文件中的字數排名的代碼。如何打印出單詞的等級編號?

from string import punctuation 
from operator import itemgetter 

N = 20 
words = {} 

words_gen = (word.strip(punctuation).lower() for line in open("output.txt") 
            for word in line.split()) 

for word in words_gen: 
    words[word] = words.get(word, 0) + 1 

top_words = sorted(words.items(), key=itemgetter(1), reverse=True)[:N] 


for word, frequency in top_words: 
    print("%s %d" % (word, frequency)) 

因此,從文本文件,它會返回:

hello 8 
him 5 
your 4 

代碼沒有排名,但有什麼辦法可以打印出排名多少?

我希望它看起來像這樣。

hello 1 8 
him 2 5 
your 3 4 

第一個數字是總體等級,第二個數字是該文本文件中單詞的頻率。我試圖像計算排名。

rank=0 
if top_words: 
    rank+=1 

但我不知道該從哪裏去。

回答

2

您可以使用enumerate

for i, (word, frequency) in enumerate(top_words, start=1): 
    print("%s %d %d" % (word, i, frequency)) 
0
rank = 0  

for word, frequency in top_words: 
    rank += 1 
    print("%s %d %d" % (word,rank, frequency)) 

這應該工作。