我需要用两个列表(envs和coms)和一个JSON输出(每个输出对应于env com组合)创建一个字典,如下面的脚本所示。我想要的结果字典应该类似于:
{
"live-business-data-infrastructure": {
"component": "traveldb",
"environment": "test"
},
{ .... }
}
这只是我用原始脚本制作的一个示例,以演示我所追求的:
#!/usr/bin/env python
import json
envs = [ 'test','live', ] ## originallt: [ 'test','live',... ]
coms = [ 'traveldb' ] ## originally: [ 'traveldb','weatherbot',... ]
test_traveldb_stks = [ {
"main_stack": 'false',
"name": "test-business-data-resources"
},
{
"main_stack": 'true',
"name": "test-business-data-infrastructure"
}
]
live_traveldb_stks = [ {
"main_stack": 'false',
"name": "live-business-data-resources"
},
{
"main_stack": 'true',
"name": "live-business-data-infrastructure"
}
]
aList = []; sDict = {}
for env in envs:
for com in coms:
aList.extend([ zz['name'] for zz in eval(env+'_'+com+'_stks') ])
sDict[aList[-1]] = { 'component':com, 'environment':env }
#print(aList)
print(json.dumps(sDict, sort_keys=True, indent=4))
因为脚本中的sDict[aList[-1]]
位,这是非常有效的,但是遗漏了一些数据,但是我不太清楚如何迭代两个嵌套循环并用JSON映射它们以获得所需的dict。有什么建议吗?如果我没说清楚就告诉我。干杯!!你知道吗
我想你已经很接近了,但是为什么你只接受
aList
中的最后一项呢?通过使用extend
而不是append
,您可以不是
此外,您还需要遍历这些项。尝试:
请注意,如果您只使用
aList = []
和aList.append(...)
来填充sDict
,而不需要进一步使用它,则可以省略aList = []
和aList.append(...)
。你知道吗相关问题 更多 >
编程相关推荐