Python 如何打印出一个单词的排名号?

Python 如何打印出一个单词的排名号?,python,Python,我有一个代码,用于对从url导入的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(

我有一个代码,用于对从url导入的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
但我不知道从那里走到哪里。

您可以使用:

这应该行得通

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

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