有没有什么办法来动态创建丢失的键如果我想要在子字典中设置一个变量。递归字典创建python
基本上我想创建任何丢失的键并设置我的值。
self.portdict[switchname][str(neighbor['name'])]['local']['ports'] = []
目前,我这样做,但它的凌乱:
if not switchname in self.portdict:
self.portdict[switchname] = {}
if not str(neighbor['name']) in self.portdict[switchname]:
self.portdict[switchname][str(neighbor['name'])] = {}
if not 'local' in self.portdict[switchname][str(neighbor['name'])]:
self.portdict[switchname][str(neighbor['name'])]['local'] = {}
if not 'ports' in self.portdict[switchname][str(neighbor['name'])]['local']:
self.portdict[switchname][str(neighbor['name'])]['local']['ports'] = []
有没有办法中的一个或两行而不是这样做呢?
递归'defaultdict'厂是一个有趣的想法!我没有想过这样做。 – DaoWen 2014-10-06 19:52:45
当OP在最后一个深度想要一个“列表”时失败。 – o11c 2014-10-06 20:18:27
@ o11c - 不是。这意味着OP需要明确地设置它。 'd''foo'] ['bar'] ['baz'] = []'或'd ['foo'] ['bar'] = defaultdict(list)'OP必须为其他任何人答案以及... – mgilson 2014-10-06 20:41:43