我有一个嵌套字典,我想将其转换为以下子类:
class SubDict(dict):
def __getattr__(self, attr):
if attr in self.keys():
return self.get(attr)
如果我这样做,它对基础词典很有用:
my_nested_dict = SubDict(my_nested_dict)
但是我也需要将嵌套的转换为SubDict。我怎么能做到这一点?
谢谢!
答案 0 :(得分: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)
答案 1 :(得分:0)
如果您的SubDict
课程除了您在此处显示的内容之外什么都不做,那么这是defaultdict
as document by Harold Cooper on Github的工作:
def tree(): return defaultdict(tree)