首页 > 解决方案 > 通过遵循 Python 中值的特定路径替换嵌套字典中的值

问题描述

我有一个嵌套字典,我试图使用由该特定值的键组成的路径替换键的给定值。

基本示例:

path_to_value = ["fruit", "apple", "colour"]

replacement_value = "green"

dictionary = {"fruit":  {"apple":   {"colour":  "red"}, "banana": {"colour": "yellow", "size": "big"}}}

我在 Stackoverflow 上找到了一个函数,但它递归地替换了 dict 中我不想要的所有值。

def change_key(d, required_key, new_value):
    for k, v in d.items():
        if isinstance(v, dict):
            change_key(v, required_key, new_value)
        if k == required_key:
            d[k] = new_value

任何帮助,将不胜感激。

标签: pythondictionarynested

解决方案


我认为这样的事情应该可行:缩小使用除最后一个键之外的所有键来获取要修改的字典,然后使用最后一个键对其进行修改。

def change_key(d, path_to_value, new_value):
    for key in path_to_value[:-1]:
        d = d[key]
    d[path_to_value[-1]] = new_value

推荐阅读