我有一個嵌套的字典是這樣的:打印:忽略,如果該鍵是「無」
myDict = {
"sample-adaptors": {
"banana-mock": {
"insts": [
"i-34d425g5"
]
}
},
"cucumber-test": {
"None": {
"insts": [
"i-65j3hue6"
]
}
},
"SampleMonitoring": {
"sample-mon-comp": {
"insts": [
"i-754mbde"
]
},
"None": {
"insts": [
"i-981a5134",
"i-76a25ge1"
]
}
}
}
從中,我需要制定字符串(S)是這樣的:
EC2.sample-adaptors.banana-mock
EC2.cucumber-test
EC2.SampleMonitoring.sample-mon-comp
也就是說,如果每一秒關鍵不是None
它會被添加到與.
(點)的字符串,否則不行。這是我來着,到目前爲止....
>>> nStr = lambda s: str({'None':''}.get(s,s))
>>> zLen = lambda n: (1 if len(n)>=1 else 0)
>>>
>>> for proj in myDict:
... for comp in myDict[proj]:
... print "EC2.{0}{1}".format(proj, ('.'+nStr(comp))*zLen(nStr(comp)))
這是工作,但不知道是否是這樣做的方式。這兩個嵌套for-loop可以縮短嗎?實際的字典非常大,所以代碼應該足夠高效,以便儘可能快地處理數據。在此先感謝您的幫助。
是字典總是2的深度? – Hyperboreus
等等,你是否指望在字典中訂購? – BlackVegetable
@Hyperboreus:是的,深度應始終爲2。 – MacUsers