如何为dict中的多个键赋值?

时间:2014-05-19 09:21:58

标签: python dictionary

这就是我打算做的事情:

d = {}
d['a']['b'] = 123

我期待的是这样的字典:

{"a":{"b":123}}

但错误是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'a'

有人能告诉我怎么做我想要的吗?非常感谢!

2 个答案:

答案 0 :(得分:7)

您首先必须创建a嵌套词典:

d['a'] = {}
d['a']['b'] = 123

或创建完全形成的嵌套字典:

d['a'] = {'b': 123}

或使用collections.defaultdict() object作为父词典,让它根据需要为您创建嵌套词典:

from collections import defaultdict

d = defaultdict(dict)

d['a']['b'] = 123

如果您希望这适用于任意深度,请创建一个自引用工厂函数:

from collections import defaultdict

tree = lambda: defaultdict(tree)

d = tree()

d['a']['b'] = 123
d['foo']['bar']['baz'] = 'spam'

答案 1 :(得分:4)

你需要更明确。

d['a'] = { 'b': 123 }

您也可以使用defaultdict,将空字典作为默认值。