Замените значение во вложенном словаре, следуя определенному пути к значению в Python

#python #dictionary #nested

Вопрос:

У меня есть вложенный словарь, в котором я пытаюсь заменить заданное значение ключа, используя путь, состоящий из ключей к этому конкретному значению.

Основной Пример:

 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
 

Любая помощь будет признательна.

Ответ №1:

Я думаю, что что-то вроде этого должно сработать: сузьте использование всех ключей, кроме последних, чтобы получить словарь, который вы хотите изменить, а затем измените его с помощью последнего ключа.

 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