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

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

Patricia Arquette
发布: 2024-11-06 21:54:02
原创
420 人浏览过

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

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

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

递归方法

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

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

1

2

3

4

5

6

7

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 中相应的键即可。这可以确保中间键不会被覆盖。

用法示例

考虑以下示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板