2013-12-14 3 views
2

У меня есть код для ранжирования количества слов в txt-файле, который я импортировал из URL-адреса.Как распечатать номер ранга слова?

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)) 

Это должно работать.

Смежные вопросы