首页  >  文章  >  后端开发  >  如何在 Python 中更新嵌套字典而不覆盖中间键?

如何在 Python 中更新嵌套字典而不覆盖中间键?

Patricia Arquette
Patricia Arquette原创
2024-11-06 21:54:02288浏览

How to Update Nested Dictionaries in Python Without Overwriting Intermediate Keys?

更新嵌套字典而不覆盖中间键

使用嵌套字典时,通常需要更新特定键而不影响其他级别。然而,Python 中的标准更新方法会覆盖同一级别的所有键,这使得实现这一目标具有挑战性。

递归方法

递归方法可以有效解决这个问题。通过递归遍历字典,我们可以在适当的深度识别和更新键,同时保留现有的结构。

例如,可以使用以下递归函数将 update 的内容更新到dictionary1,而不覆盖 levelA:

def update(d, u):
    for k, v in u.items():
        if isinstance(v, dict):
            d[k] = update(d.get(k, {}), v)
        else:
            d[k] = v
    return d

在此函数中,我们检查 v 是否是字典,并使用适当的子字典递归调用更新。如果 v 不是字典,我们只需更新 d 中相应的键即可。这可以确保中间键不会被覆盖。

用法示例

考虑以下示例:

dictionary1 = {
    "level1": {
        "level2": {"levelA": 0, "levelB": 1}
    }
}
update = {
    "level1": {
        "level2": {"levelB": 10}
    }
}

updated_dictionary = update(dictionary1, update)
print(updated_dictionary)

# Output:
# {'level1': {'level2': {'levelA': 0, 'levelB': 10}}}

如您所见,levelA 保留在更新的字典中,尽管更新包含 levelB 的值。这证明了递归方法的有效性。

以上是如何在 Python 中更新嵌套字典而不覆盖中间键?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn