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

Как сложить значения одинаковых ключей в списке словарей?

Имеем два списка из словарей:

first = [{'month': 'марта', 'stat': 10}, {'month': 'февраля', 'stat': 5}, {'month': 'января',  'stat': 20}]
second = [{'month': 'марта', 'stat': 12}, {'month': 'февраля', 'stat': 7}, {'month': 'января',  'stat': 17}]


Как можно получить список в котором будут суммированы значения ключей 'stat'?

Необходимый результат:
third =  [{'month': 'марта', 'stat': 22}, {'month': 'февраля', 'stat': 12}, {'month': 'января',  'stat': 37}]
  • Вопрос задан
  • 898 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 2
0xD34F
@0xD34F
data = first + second
months = set(n['month'] for n in data)
summed = [ { 'month': m, 'stat': sum(n['stat'] for n in data if n['month'] == m) } for m in months ]
Ответ написан
Комментировать
from collections import defaultdict
from itertools import chain

result = defaultdict(int)
first = [{'month': 'марта', 'stat': 10}, {'month': 'февраля', 'stat': 5}, {'month': 'января', 'stat': 20}]
second = [{'month': 'марта', 'stat': 12}, {'month': 'февраля', 'stat': 7}, {'month': 'января', 'stat': 17}]

for row in chain(first, second):
    result[row['month']] += row['stat']

print([{'month': k, 'stat': v} for k, v in result.items()])


уже прорва похожих ответов была
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
shabelski89
@shabelski89
engineer
я сделал понубски, но работает:
first = [{'month': 'марта', 'stat': 10}, {'month': 'февраля', 'stat': 5}, {'month': 'января',  'stat': 20}]
second = [{'month': 'марта', 'stat': 12}, {'month': 'февраля', 'stat': 7}, {'month': 'января',  'stat': 17}]
third = second.copy()
for x,y,z in zip(first,second, third):
    z['stat'] = x['stat'] + y['stat']
print(third)
#  [{'month': 'марта', 'stat': 22}, {'month': 'февраля', 'stat': 12}, {'month': 'января', 'stat': 37}]
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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