我想嵌套任意数量的默认值,如下所示:
@Autowired(required = false)
@Qualifier("shellAccessDecisionManager")
private AccessDecisionManager accessDecisionManager;
如earlier所描述的那样正常。
现在,我正在寻找以任意深度执行此操作的方式/功能: 所以例如我想要一个功能
from collections import defaultdict
D = defaultdict( lambda:defaultdict(int) )
将为dim = 3返回此信息:
def Gen_DDict( dim=3 ):
"code I'm looking for"
答案 0 :(得分:6)
def genDDict(dim=3):
if dim==1:
return collections.defaultdict(int)
else:
return collections.defaultdict(lambda: genDDict(dim-1))
输出:
In [257]: d = genDDict(2)
In [258]: d[2][1]
Out[258]: 0
答案 1 :(得分:1)
您也可以通过从内向外构建for循环来迭代地执行此操作:
def Gen_DDict(dim=3, inner_factory=int):
factory = defaultdict(inner_factory)
def get_factory(z):
def factory_func():
return z
return factory_func
for i in range(dim-1):
factory = defaultdict(get_factory(factory))
return factory