def update_dict_cascade(dict_1, dict_2): """ Update dict_1 with dict_2 in a cascade manner. :param dict_1: The dict to be updated. :param dict_2: The dict used for updating. :return: The updated dict_1. """ if dict_1 == dict_2: pass else: for k, v in dict_2.items(): try: v1 = dict_1[k] if not isinstance(v1, dict) or not isinstance(v, dict): dict_1[k] = [v1, v] else: dict_1[k] = update_dict_cascade(v1, v) except KeyError: dict_1[k] = v return dict_1
Test:
a = {'a': {'aa': {'aaa': 1}}} b = {'a': {'aa': {'bbb': 2}}} c = {'a': {'bb': {'ccc': 3}}} d = {'b': {'bb': {'ddd': 4}}} e = {'c': {'cc': {'eee': 5}}} print(a) update_dict_cascade(a, b) print(a) update_dict_cascade(a, c) print(a) update_dict_cascade(a, d) print(a) update_dict_cascade(a, e) print(a) Output: {'a': {'aa': {'aaa': 1}}} {'a': {'aa': {'aaa': 1, 'bbb': 2}}} {'a': {'aa': {'aaa': 1, 'bbb': 2}, 'bb': {'ccc': 3}}} {'a': {'aa': {'aaa': 1, 'bbb': 2}, 'bb': {'ccc': 3}}, 'b': {'bb': {'ddd': 4}}} {'a': {'aa': {'aaa': 1, 'bbb': 2}, 'bb': {'ccc': 3}}, 'b': {'bb': {'ddd': 4}}, 'c': {'cc': {'eee': 5}}}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律