Я пытаюсь найти вхождения одного списка слов в другой список слов. Мой код выглядит следующим образом:Неверные результаты подсчета частоты
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})
Похоже, что программа добавляет слова из предыдущей строки в следующий, кто-нибудь знает, как я могу это исправить?
Вы уверены, что в отступлении? Счетчик вне цикла? –
Вы правы, «счетчик печати» должен находиться внутри цикла, это кажется потерянным при вставке его здесь. – Shifu
@NipunBatra I второй. @Nikolaas Я думаю, что код делает то, что вы ему рассказываете. Где вы инициализируете 'counter'? Поскольку 'counter' обновляется для каждой записи в' posts', ее необходимо повторно инициализировать в пределах одного цикла (т. Е. Цикл 'for ... in posts:'); в противном случае изменения предыдущей итерации цикла будут сохранены для следующей итерации. – user