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'
おかげ
n.b.
完全に動作するコード:
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); word_genの単語の場合:words [word] + = 1'。 –
@TimPietzcker:実際、同じモジュールの 'Counter 'がここでは良いです。パーフェクト、均等。なぜ私はそれを以前考えなかったのですか?アイデアをありがとう。 –