在Python 3.2/Windows环境中处理单词出现计数应用程序。Python字数和排名
任何人都可以请帮助告诉我为什么以下不工作?
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)
的追溯错误是:
Message File Name Line Position
Traceback
<module> C:\Users\will\Desktop\word_count.py 13
AttributeError: 'dict' object has no attribute 'iteritems'
感谢
注:
完全工作代码:
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))
再次感谢你们
'top_words =(words.iteritems(),键= itemgetter(1),反向= TRUE) [:N]' - 你不是在这里错过了一些函数名吗? – eumiro
你可能想要使用'defaultdict':'words = defaultdict(int); for word_gen中的单词:单词[单词] + = 1'。 –
@TimPietzcker:实际上,来自同一模块的'计数器'在这里比较好。完美,甚至。为什么我以前没有想到它?感谢这个想法。 –