0

我有一个嵌套字典,我想将其转换为以下子类:

class SubDict(dict):
    def __getattr__(self, attr):
        if attr in self.keys():
            return self.get(attr)

如果我这样做了,它对基本 dict 很有用:

my_nested_dict = SubDict(my_nested_dict)

但我也需要将嵌套的那些转换为 SubDict。我怎么能做到这一点?

谢谢!

4

2 回答 2

1

您需要递归嵌套字典并递归转换它们:

class SubDict(dict):
    def __init__(self, *args, **kw):
        super(SubDict, self).__init__(*args, **kw)
        for key, value in self.iteritems():
            if isinstance(value, dict):
                self[key] = SubDict(value)

你有没有仔细研究collections.defaultdict过?你可以很容易地从头开始创建一棵树:

import defaultdict

def Tree(): return defaultdict(tree)
于 2013-02-05T14:49:52.180 回答
0

如果您的SubDict班级除了您在此处展示的内容外什么都不做,这是defaultdict Harold Cooper 在 Github 上的文档

def tree(): return defaultdict(tree)
于 2013-02-05T14:50:03.553 回答