在Python中,按照值的特定路径替换嵌套字典中的值

dbf7pr2w  于 2023-01-19  发布在  Python
关注(0)|答案(2)|浏览(139)

我有一个嵌套的字典,我试图用一个由键组成的路径来替换键的一个给定值。
基本示例:

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

任何帮助都将不胜感激。

ee7vknir

ee7vknir1#

我觉得这样应该行得通:使用除最后一个键之外的所有键来获取要修改的字典,然后使用最后一个键来修改它。

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
ifmq2ha2

ifmq2ha22#

你可以试试这个

def replace_val(dict, val_path, new_val):
    if len(val_path) == 1:
        dict[val_path[0]] = new_val
        return dict
    else:
        dict[val_path[0]] = replace_val(dict[val_path[0]], val_path[1:], new_val)
        return dict

相关问题