我会说经验丰富的Python开发人员会使用
my_dict.setdefault('foo', {})['bar'] = some_var
要么
from collection import defaultdict
my_dict = defaultdict(dict)
my_dict['foo']['bar'] = some_var
同样为了完整起见,我将向您介绍一个递归的defaultdict模式,它允许无限深度的字典而不会出现任何键错误
>>> from collections import defaultdict
>>> def tree(): return defaultdict(tree)
>>> my_dict = tree()
>>> my_dict['foo']['bar']['spam']['egg'] = 0
>>> my_dict
defaultdict(, {'foo': defaultdict(, {'bar': defaultdict(, {'spam': defaultdict(, {'egg': 0})})})})