使用嵌套字典时,通常需要更新特定键而不影响其他级别。然而,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中文网其他相关文章!