我想在
nosklo的前一个答案中给出扩展
the autovivification example以允许元组访问字典.
nosklo的解决方案如下所示:
class AutoVivification(dict):
"""Implementation of perl's autovivification feature."""
def __getitem__(self, item):
try:
return dict.__getitem__(self, item)
except KeyError:
value = self[item] = type(self)()
return value
测试:
a = AutoVivification()
a[1][2][3] = 4
a[1][3][3] = 5
a[1][2]['test'] = 6
print a
输出:
{1: {2: {'test': 6, 3: 4}, 3: {3: 5}}}
我有一个案例,我想设置一个节点给定一些任意的下标元组.如果我不知道元组将有多少层,我该如何设计一种设置适当节点的方法?
我想也许我可以使用如下语法:
mytuple = (1,2,3)
a[mytuple] = 4
但是我无法想出一个有效的实施方案.
更新
我有一个基于@ JCash答案的完整工作示例:
class NestedDict(dic