多维python字典

use*_*059 3 python dictionary list

我想在python中创建一个多维字典,以便我可以使用以下表示法访问它们:

test['SYSTEM']['home']['GET']
test['SYSTEM']['home']['POST']
Run Code Online (Sandbox Code Playgroud)

设置这些值的最简单方法是什么,在其他语言中我可以这样做:

test['SYSTEM']['home']['GET'] = True
test['SYSTEM']['home']['POST'] = False
Run Code Online (Sandbox Code Playgroud)

the*_*eye 5

您可以创建一个collections.defaultdict基于递归的结构,如下所示

>>> from collections import defaultdict
>>> nesteddict = lambda: defaultdict(nesteddict)
>>>
>>> test = nesteddict()
>>> test['SYSTEM']['home']['GET'] = True
>>> test['SYSTEM']['home']['POST'] = False
>>>
>>> test['SYSTEM']['home']['GET']
True
>>> test['SYSTEM']['home']['POST']
False
Run Code Online (Sandbox Code Playgroud)

每当您访问test其中没有的密钥时,它将调用传递给nesteddict参数的函数来为密钥创建值.