这就是我打算做的事情:
d = {}
d['a']['b'] = 123
Run Code Online (Sandbox Code Playgroud)
我期待的是这样的字典:
{"a":{"b":123}}
Run Code Online (Sandbox Code Playgroud)
但错误是:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'a'
Run Code Online (Sandbox Code Playgroud)
有人能告诉我怎么做我想要的吗?非常感谢!
您首先必须创建a嵌套字典:
d['a'] = {}
d['a']['b'] = 123
Run Code Online (Sandbox Code Playgroud)
或者创建完全形成的嵌套字典:
d['a'] = {'b': 123}
Run Code Online (Sandbox Code Playgroud)
或者使用父词典的collections.defaultdict()对象让它根据需要为您创建嵌套词典:
from collections import defaultdict
d = defaultdict(dict)
d['a']['b'] = 123
Run Code Online (Sandbox Code Playgroud)
如果您希望这适用于任意深度,请创建一个自引用工厂函数:
from collections import defaultdict
tree = lambda: defaultdict(tree)
d = tree()
d['a']['b'] = 123
d['foo']['bar']['baz'] = 'spam'
Run Code Online (Sandbox Code Playgroud)