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

Как обновлять словари с вложенными словарями?

У меня есть два словаря:
a = {'a' : {'a' : 'some value'}}
b = {'a' : {'b' : 'some_value'}}


Мне нужно обновить словарь a. На выходе должно быть подобное.
updated = {'a' : {'a' : 'some value', 'b' : 'some_value}}


Я знаю о методах update, или dict(a, **b), но мне нужно что бы сохранялись так же и вложенные данные.

Был бы рад получить ответ, или место куда стоит смотреть
  • Вопрос задан
  • 591 просмотр
Подписаться 2 Простой 6 комментариев
Решение пользователя Илья К ответам на вопрос (3)
@stead Автор вопроса
from collections.abc import Mapping

    def __deep_update(source : dict, overrides : dict):
        for key, value in overrides.items():
            if isinstance(value, Mapping) and value:
                returned = __deep_update(source.get(key, {}), value)
                source[key] = returned
            else:
                source[key] = overrides[key]
        return source
Ответ написан
Комментировать