0
它必须是一件简单的事情,但不能让我的头靠近它。我的剧本的部分做到这一点:如何创建一个多级字典
myDict = {}
for dev in self.dmd.Devices():
device = dev.id
collector = dev.getPerformanceServerName()
instances = [ inst.id for inst in dev.instances() ]
,并从那里,我想创建这样一个字典:
{
"EC2-test-eip-alloc": {
"mon511.backbc.local": [
"i-1828ca57",
"i-372d3978"
]
}
....
....
}
其中EC2测试-EIP-ALLOC =>device
,mon511 .backbc.local =>collector
和[“i-1828ca57”,“i-372d3978”] =>instances
。我试着用:
inDict = reduce(lambda d, k: d.setdefault(k, {}), device, myDict)
inDict.setdefault(collector, instances)
,但得到一个非常奇怪的结果,其中device
每个字符被视为关键,就像这样: {"E":{"C":{"2":{"-":{...}}}}}
。任何想法我怎么能得到这个东西是正确的?干杯!!
'reduce'迭代'device',这是一个字符串。不知道如何解决它,但也许有帮助。 – colcarroll
在'reduce'中,可以将'device'封装在一个元组中:'(device,)' – wflynny
@ Bill:谢谢!我已经尝试了'(设备)',但最后还是没有'',''。工作得很好。干杯!! – MacUsers