如何让Python在字典中自动创建缺少的键/值对?

del*_*ber 14 python

我正在创建一个深层次的字典结构.我正在尝试做类似以下的事情:

dict = {}
dict['a']['b'] = True
Run Code Online (Sandbox Code Playgroud)

目前上述失败是因为密钥'a'不存在.目前,我必须检查每个嵌套级别并手动插入一个空字典.是否有某种类型的语法糖能够做到像上面这样可以产生的东西:

{'a': {'b': True}}
Run Code Online (Sandbox Code Playgroud)

无需在每个嵌套级别创建一个空字典?

Hen*_*ter 27

正如其他人所说,使用defaultdict.这是我喜欢任意深度嵌套字典的习语:

nested_dict = lambda: collections.defaultdict(nested_dict)

d = nested_dict()
d[1][2][3] = 'Hello, dictionary!'
print(d[1][2][3]) # Prints Hello, dictionary!
Run Code Online (Sandbox Code Playgroud)

这也会检查元素是否存在更好,因为您可能不再需要使用get:

if not d[2][3][4][5]:
    print('That element is empty!')
Run Code Online (Sandbox Code Playgroud)

  • 这是一个优雅的实现. (3认同)