Python字数和排名

Fru*_*ful 5 python python-3.x

在Python 3.2/Windows环境中处理单词出现计数应用程序.

任何人都可以请帮助告诉我为什么以下不起作用?

from string import punctuation
from operator import itemgetter

N = 100
words = {}

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

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

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

for word, frequency in top_words:
    print ("%s %d") % (word, frequency)
Run Code Online (Sandbox Code Playgroud)

追溯错误是:

Message File Name   Line    Position    
Traceback               
    <module>    C:\Users\will\Desktop\word_count.py 13      
AttributeError: 'dict' object has no attribute 'iteritems'              
Run Code Online (Sandbox Code Playgroud)

谢谢

NB

完全工作的代码:

from string import punctuation
from operator import itemgetter

N = 100
words = {}

words_gen = (word.strip(punctuation).lower() for line in open("poi_run.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))
Run Code Online (Sandbox Code Playgroud)

再次感谢你们

Pet*_*rin 4

在 Python 3 中,仅items使用之前使用iteritems.

newitems()返回一个支持迭代以及and的字典视图对象lenin

当然,top_words = (words.iteritems(), ...您忘记调用该sorted函数。


编辑:请参阅我的其他答案以获得更好的解决方案。