我正在尝试查找一个单词列表在另一个单词列表中出现的情况。 我的代码如下所示:
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")]
顶部看起来像这样“Post1,Post2,Post3”
预期结果是:
{post1: 3}
{post2, 2}
{post3, 1}
但是我现在得到的输出是:
{'post1': 3})
{'post2': 2, 'post1': 3})
{'post3': 1, 'post2': 2, 'post1': 3})
看起来程序将上一行中的单词添加到下一行,有人知道我该如何解决这个问题吗?
最佳答案
提示: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
变量将包含找到的单词的频率计数。
关于python - 频率计数的错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16254250/