Учитывая список словарей, как узнать, в каких словарях присутствует каждый ключ? - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть список dictionaries, и каждый dictionary имеет слово в качестве ключа, и сколько раз это слово появляется в конкретном документе в качестве значения.Теперь мне интересно, как я могу узнать, сколько dictionaries появляется конкретное слово?

предположим, у меня есть список следующих словарей:

dict1 = {'Association':5, 'Rule':2, 'Mining':3}
dict2 = {'Rule':4, 'Mining':1}
dict3 = {'Association':4, 'Mining':3}

Результат после подсчета количества словарей aслово появляется в:

result_dict = {'Association':2, 'Rule':2, 'Mining':3}

Ответы [ 2 ]

2 голосов
/ 22 сентября 2019

Counter - это подкласс dict, который может быть полезен здесь:

from collections import Counter


dicts = [dict1, dict2, dict3]

key_counters = [Counter(dictionary.keys()) for dictionary in dicts]
start_counter = Counter()

result_dict = sum(key_counters, start_counter)

assert result_dict == {'Association': 2, 'Rule': 2, 'Mining': 3}
1 голос
/ 22 сентября 2019

Это легко сделать с пониманием диктов.
Сначала составьте список из ваших диктов:

dict1 = {'Association':5,'Rule':2,'Mining':3}
dict2 = {'Rule':4,'Mining':1}
dict3 = {'Association':4,'Mining':3}

dicts = [dict1, dict2, dict3]

Затем составьте набор всех слов в словарях с помощью объединения (это может быть более простой способ сделать это, но это сработало):

all_words = set().union(*[d.keys() for d in dicts])

Затем подсчитайте, сколько словарей содержит каждое слово:

{k: sum([1 for d in dicts if k in d.keys()]) for k in all_words}

Это вернуло желаемый результат из вашегопример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...