如果键来自列表,则遍历字典

问题描述

考虑我有一个列表和字典,例如

list = ['master','sub1','sub2']
dict={'master':{'sub1':{'sub2':5}}}

是否有一种方法可以遍历嵌套字典来获取,以便更新存储在其中的值?

dict['master']['sub1']['sub2'] = new_value

键和new_value的列表可能会有所不同,因此解决方案不能是静态的,有解决此问题的解决方案吗?

使用functools.reduce()可以获取存储在该层次结构中的特定值,但是我不确定如何更改存储在该层次结构中的值

感谢您的帮助!

解决方法

您可以使用递归:

l = ['master','sub1','sub2']
d = {'master':{'sub1':{'sub2':5}}}
def to_dict(l,val=5):
  return {l[0]:val if not l[1:] else to_dict(l[1:])}

print(to_dict(l))

输出:

{'master': {'sub1': {'sub2': 5}}}