如何让 Python 自动创建字典中缺失的键/值对? [复制]

2024-02-22

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

dict = {}
dict['a']['b'] = True

目前,上述操作失败,因为键“a”不存在。目前我必须检查每个嵌套级别并手动插入一个空字典。是否有某种类型的语法糖能够执行上述操作可以产生:

{'a': {'b': True}}

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


正如其他人所说,使用defaultdict https://docs.python.org/3/library/collections.html#collections.defaultdict。这是我更喜欢的用于任意深度嵌套字典的习惯用法:

def nested_dict():
    return collections.defaultdict(nested_dict)

d = nested_dict()
d[1][2][3] = 'Hello, dictionary!'
print(d[1][2][3]) # Prints Hello, dictionary!

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

if not d[2][3][4][5]:
    print('That element is empty!')

这已被编辑为使用def而不是 lambdaPEP8 合规性 https://www.python.org/dev/peps/pep-0008/#programming-recommendations。原始的 lambda 形式如下所示,它的缺点是被调用<lambda>无处不在,而不是获得正确的函数名称。

>>> nested_dict = lambda: collections.defaultdict(nested_dict)
>>> d = nested_dict()
>>> d[1][2][3]
defaultdict(<function <lambda> at 0x037E7540>, {})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 Python 自动创建字典中缺失的键/值对? [复制] 的相关文章

随机推荐