Мне нужно создать словарь из двух списков - envs и coms - и выход JSON (каждый для каждой комбинации env-com), как и скрипт ниже. Результирующий словарь, который я хотел бы иметь что-то должно быть похоже на это:Создание итерации с помощью двух вложенных циклов и выхода JSON
{
"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.append (d [" name "])' здесь? и я '' {} _ {} _ stks "' не работает для меня, мне пришлось идти с '" {0} _ {1} _stks "' вместо этого. Тестирование этого в моем первоначальном сценарии на данный момент. Ура !! – MacUsers
Проблема '{}'/'{0}' - это Python 2.x vs. 3.x. Я обновил свой ответ и комментарии. – jonrsharpe