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

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


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


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

Был бы рад получить ответ, или место куда стоит смотреть
  • Вопрос задан
  • 112 просмотров
Решения вопроса 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)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Сбер Иннополис
от 80 000 ₽
Сбер Москва
от 200 000 до 300 000 ₽
SpectrumData Екатеринбург
от 150 000 до 250 000 ₽
05 окт. 2022, в 15:13
30000 руб./за проект
05 окт. 2022, в 15:03
150000 руб./за проект
05 окт. 2022, в 14:49
24000 руб./за проект