#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