使用给定列表更新深度嵌套的字典[关闭]

问题描述 投票:0回答:1

我使用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}}}}
python dictionary key
1个回答
1
投票

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}}}}
© www.soinside.com 2019 - 2024. All rights reserved.