Я хочу расширить данный dict другим, но если ключ уже существует, я должен накапливать значения.

Примере:

Давайте рассмотрим данную функцию с именем cumulative_update и два dicts a и b:

a = { "a" : 1, "b" : 2, "c" : 1 }
b = { "c" : 3, "d" : 4 }
a.cumulative_update(b)

Желаемый результат должен быть:

{'a': 1, 'b': 2, 'c': 4, 'd': 4}

Но когда я использую функцию добавления по умолчанию:

a.update(b)

Я получил:

{'a': 1, 'b': 2, 'c': 3, 'd': 4}

Я также нашел решение для добавления значений в Как суммировать значения одного и того же ключа в словаре? но он основан на ключах, что в моем случае невозможно.

0
Amir Maaoui 20 Май 2021 в 14:33

2 ответа

Лучший ответ

Вы можете использовать Counter:

from collections import Counter

a = { "a" : 1, "b" : 2, "c" : 1 }
b = { "c" : 3, "d" : 4 }

result = Counter(a) + Counter(b)

ВЫХОД:

Counter({'c': 4, 'd': 4, 'b': 2, 'a': 1})
1
Nk03 20 Май 2021 в 11:41
a = { "a" : 1, "b" : 2, "c" : 1 }
b = { "c" : 3, "d" : 4 }


result = {key: a.get(key, 0) + b.get(key, 0) for key in set(a) | set(b)}

Выход:

{'a': 1, 'b': 2, 'd': 4, 'c': 4}
0
GMaster 20 Май 2021 в 11:53