class Tree(defaultdict):

    def __init__(self, value=None):
        super(Tree, self).__init__(Tree)
self.value = value
root = Tree()
root.value = 1
root['a']['b'].value = 3
print(root.value)
print(root['a']['b'].value)
print(root['c']['d']['f'].value)
Многоуровневый defaultdict с переменной глубиной?