2

ある単語リストの出現箇所を別の単語リストで見つけようとしています。私のコードは次のようになります。

for cat, text2 in posts:
words=wordpunct_tokenize(text2)
for word in words:
    if word in top:
        counter[word]+=1

print counter

単語は次のようになります: [("Post1", "post1" ,"post1"), ("post2","post2), ("post3")] top は次のよう"Post1, Post2, Post3" になります 期待される結果は次のようになります。

{post1: 3}
{post2, 2}
{post3, 1}

ただし、現在得られる出力は次のとおりです。

{'post1': 3})
{'post2': 2, 'post1': 3})
{'post3': 1, 'post2': 2, 'post1': 3})

プログラムが前の行の単語を次の行に追加しているように見えますが、これを修正する方法を知っている人はいますか?

4

1 に答える 1

2

ヒント: Python には、既に必要なことを実行するクラスがあり、それが呼び出さCounterれ、collectionsモジュール内にあります。

from collections import Counter
c = Counter()
for cat, text2 in posts:
    c.update(word for word in wordpunct_tokenize(text2) if word in top)

最後に、c変数には見つかった単語の頻度カウントが含まれます。

于 2013-04-27T16:12:00.817 に答える