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