动态地在dict中设置深度值

Jak*_*ake 6 python

如果我有一个嵌套的字典d = {'a':{'b':{}}}和一个字符串'a.b.c'和一个值'X'

我需要根据键字符串将值放在dict中.

我想要实现的是硬编码,d['a']['b']['c'] = 'X'但我需要动态地进行.键串可以是任何长度.

对于奖励积分:我还需要创建密钥,如果它们不存在,'a.b.z'但我相信如果我能解决它们已经存在的情况,我可以弄明白.

gaw*_*wel 12

def set(d, key, value):
    dd = d
    keys = key.split('.')
    latest = keys.pop()
    for k in keys:
        dd = dd.setdefault(k, {})
    dd.setdefault(latest, value)

d = {}
set(d, 'a.b.c', 'X')
set(d, 'a.b.d', 'Y')
print(d)
Run Code Online (Sandbox Code Playgroud)

结果:

{'a': {'b': {'c': 'X', 'd': 'Y'}}}
Run Code Online (Sandbox Code Playgroud)