我使用Python 3.9,并且有一个深度嵌套的字典,其中包含整数。我有一个路径(一个键列表),它指定我想要修改字典中的哪个值(增加一)。如果路径不存在,我想创建它们。
例如:
keyList = ['a', 'b', 'c', 'd'] #this is the pathway
我想修改(更新)以下词典
myDict = {}
def modFun(pKeyList:list):
global myDict
#some code that modifies the directory
modFun(keyList)
print(myDict)
#it returns {'a' : {'b' : {'c' : {'d' : 1}}}}
keyList = ['a', 'c']
modFun(keyList)
print(myDict)
#it returns {'a' : {'c' : 1, 'b' : {'c' : {'d' : 1}}}}
keyList = ['a', 'b', 'c', 'd']
modFun(keyList)
print(myDict)
#it returns {'a' : {'c' : 1, 'b' : {'c' : {'d' : 2}}}}
IIUC,您可以迭代使用
dict.setdefault
:
def update_myDict(myDict):
d = myDict
for k in keyList:
if k == keyList[-1]:
d[k] = d.get(k, 0) + 1
else:
d = d.setdefault(k, {})
return myDict
输出:
>>> update_myDict({})
{'a': {'b': {'c': {'d': 1}}}}
>>> update_myDict({'a' : {'c' : 1}})
{'a': {'c': 1, 'b': {'c': {'d': 1}}}}
>>> update_myDict({'a' : {'c' : 1, 'b' : {'c' : {'d' : 1}}}})
{'a': {'c': 1, 'b': {'c': {'d': 2}}}}