频率计数导致错误的结果

时间:2013-04-27 16:10:02

标签: python

我试图在另一个单词列表中找到一个单词列表的出现。 我的代码如下所示:

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})

看起来程序会将上一行中的单词添加到下一行,有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分: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变量将包含找到的单词的频率计数。