посчитать в списке словарей для IDF - PullRequest
0 голосов
/ 17 июня 2020

У меня есть список словарей вида

list_of_dicts = [{id1: [word1, word2, word3...]}, 
{id1: [word1, word2, word3..]},..]

Я хотел бы подсчитать количество появлений слова во всем списке, а не только в одном списке значений. Я запутался, какую структуру for-l oop мне следует использовать.

Я пробовал это:

from collections import Counter
count = Counter()
term = ""
for dict in list_of_dicts:
  for key, val in dict.items():
    for word in val:
      term = word
  counter = count[term]
  term = ""
  print(counter)

это дает мне только нули.

Любой намек на то, как Приветствуем вас, чтобы продолжить!

Изменить: я хотел бы заменить рассматриваемое слово его счетчиком, поэтому в приведенном выше примере это будет: list_of_dicts = [{id1: [2, 2, 2 .. .]}, {id1: [2, 2, 2 ..]}, ..]

1 Ответ

0 голосов
/ 17 июня 2020

Я предполагаю, что этот список содержит только объект словаря, и каждый словарь может иметь список слов.

Я не уверен, чего вы добиваетесь, выполняя counter = count(term) и чуть выше этого, устанавливая search_term. Кажется, здесь чего-то не хватает.

В любом случае я пробовал это, и это работает.

list_of_dicts = [{'id1':['ayush', 'mishra', 'lol']}, {'id2':['ayush', 'mishra2', 'lol']}, {'id3':['ayush2', 'mishra3', 'lol']}]
cnt = 0
target_term = "mishra"
for dict in list_of_dicts:
  for key, val in dict.items():
    for word in val:
      if word == target_term:
        cnt+=1
print(cnt)
...