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

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

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


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


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

Был бы рад получить ответ, или место куда стоит смотреть
  • Вопрос задан
  • 568 просмотров
Подписаться 2 Простой 6 комментариев
Решения вопроса 1
@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
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
Я знаю о методах update, или dict(a, **b), но мне нужно что бы сохранялись так же и вложенные данные.


ну, осталось узнать о методе a['a'] = b
Ответ написан
Комментировать
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
a = {'a' : {'a' : 'some value'}}
b = {'a' : {'b' : 'some_value'}}
a['a'].update(b['a'])
print(a)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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