首页 > 解决方案 > Python在键列表中修改嵌套字典值

问题描述

我有一本像这样的字典:

{"value1": {}, "value2": {"value3": {}, "value4": {}, "value5": {"value6": {}}}}

和一个键列表:

["value2", "value4"]

如何修改字典以使键"value4"(在带有键的字典中"value2")更改为"value4*"?我只希望最后一个键受到影响,所以"value2"不会被改变。

我尝试过使用list(map(dictionary.get, keys)),但这并没有达到我想要的效果。

提前致谢。

ps 我尽量保持简短,如果我剪得太多,请告诉我。

标签: pythondictionarymultidimensional-arraynested

解决方案


您可以使用递归:

new_d = ["value2", "value4"]
d = {"value1": {}, "value2": {"value3": {}, "value4": {}, "value5": {"value6": {}}}}
def update(data):
  return {a if a != new_d[-1] else f'{a}*':b if not isinstance(b, dict) else update(b) for a, b in data.items()}

print(update(d))   

输出:

{'value1': {}, 'value2': {'value3': {}, 'value4*': {}, 'value5': {'value6': {}}}}

编辑:没有f-string

def update(data):
  return {a if a != new_d[-1] else a+"*":b if not isinstance(b, dict) else update(b) for a, b in data.items()}

推荐阅读