Задать вопрос
@justdani

Сложить значения одинаковых ключей множества словарей объеденённых списком?

Имеем список из словарей:
a = ({'Петя': 6, 'Вася': 8, 'Дима': 11, 'Юля': 3}, {'Петя': 5, 'Вася': 36, 'Дима': 4, 'Юля': 8}, {'Петя': 54, 'Вася': 21, 'Дима': 22, 'Юля': 39}, {'Петя': 61, 'Вася': 48, 'Дима': 71, 'Юля': 73})

Необходимо сделать словарь вида :

b = {'Петя': 'Сумма всех значений из словарей списка', 'Вася': 'Сумма всех значений из словарей списка', 'Дима': 'Сумма всех значений из словарей списка', 'Юля': 'Сумма всех значений из словарей списка'}

пол дня сижу никак не рожу алгоритм, есть идеи ребят?

Поправка: Имена не статичны, значения тоже не статичны.
  • Вопрос задан
  • 13963 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 2
JaxxDexx
@JaxxDexx
from collections import Counter

a = ({'Петя': 6, 'Вася': 8, 'Дима': 11, 'Юля': 3}, {'Петя': 5, 'Вася': 36, 'Дима': 4, 'Юля': 8}, {'Петя': 54, 'Вася': 21, 'Дима': 22, 'Юля': 39}, {'Петя': 61, 'Вася': 48, 'Дима': 71, 'Юля': 73})
c = Counter()
for d in a:
    c.update(d)
Ответ написан
@bbkmzzzz
Если без подключения модуля, то можно так:
a = (
      {'Петя': 6, 'Вася': 8, 'Дима': 11, 'Юля': 3},
      {'Петя': 5, 'Вася': 36, 'Дима': 4, 'Юля': 8},
      {'Петя': 54, 'Вася': 21, 'Дима': 22, 'Юля': 39},
      {'Петя': 61, 'Вася': 48, 'Дима': 71, 'Юля': 73}
    )

resultdict = {}                                            #  результирующий словарь

for dictionary in a:                                     # пробегаем по списку словарей
  for key in dictionary:                               # пробегаем по ключам словаря
    try:
      resultdict[key] += dictionary[key]        # складываем значения
    except KeyError:                                    # если ключа еще нет - создаем
      resultdict[key] = dictionary[key]   

print(resultdict)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы