通过在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

如有任何帮助,我们将不胜感激。

我认为这样的方法应该有效:使用除最后一个键之外的所有键缩小范围以获得要修改的字典,然后使用最后一个密钥对其进行修改。

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

你可以试试这个:

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

最新更新