Как можно написать словарь, вложенный в словарь, вложенный в словарь?
Как в данном случае можно написать словарь, вложенный в словарь, вложенный в словарь? Что-то вроде такого
ready_for_nodes[nodes] = vm_to_create[new_vm_name]
response = requests.get('http://127.1.0.1/asl_real.json')
asl_vms = json.loads(response.text)
ready_nodes = {}
vm_to_create = {}
vm_not_to_create = {}
nodes = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
for vm in asl_vms:
if check_language(vm['name']) == True and check_os_version(vm['distribution']['description']) == True:
new_vm_name = get_next_hostname(vm['name'])
vm_res = {'os:' : vm['distribution']['description'],'memory:' : vm['memory'],'cpu:' : vm['cpu'],'cpuNumber:' : vm['cpuNumber'],'disk:' : vm['disk']}
vm_to_create[new_vm_name] = vm_res
ready_for_nodes[nodes] = vm_to_create[new_vm_name]
print(json.dumps(ready_nodes))
Вот как на выходе я хочу, чтобы это выглядело в json файле: Массив, вложенный в массив. Каждый под своим индексом 1.2.3 и тд
{
"1": {
{
"aff-java-7.node.eu.consul": {
"os:": "Debian 10.1 x64",
"memory:": 1536,
"cpu:": 2,
"cpuNumber:": 2,
"disk:": 8192
},
"tgbot-go-7.node.eu.consul": {
"os:": "Debian 10.1 x64",
"memory:": 2048,
"cpu:": 4,
"cpuNumber:": 4,
"disk:": 8192
}
"2": {
{
"aff-java-9.node.eu.consul": {"
и так далее ресурсы, снова машины уже под индексом 3 и тд и тд
}
}
Ответы (1 шт):
Автор решения: Konstantin GidMaster Syrovatsk
→ Ссылка
А как понять, к какой node будет относиться vm_to_create[new_vm_name]?
Если node=vm_to_create[new_vm_name], т.е. одна node содержит только одну VM, то самое простое - это использовать enumerate:
#!/bin/python3
asl_vms = [
{
"name": "aff-java-7.node.eu.consul",
"distribution": {
"description": "Debian 10.1 x64",
},
"memory": 1536,
"cpu": 2,
"cpuNumber": 2,
"disk": 8192
},
{
"name": "tgbot-go-7.node.eu.consul",
"distribution": {
"description": "Debian 10.1 x64",
},
"description": "10.1 x64",
"memory": 2048,
"cpu": 4,
"cpuNumber": 4,
"disk": 8192
},
]
ready_for_nodes = {}
for index, vm in enumerate(asl_vms):
new_vm_name = vm['name']
vm_res = {'os:' : vm['distribution']['description'],'memory:' : vm['memory'],'cpu:' : vm['cpu'],'cpuNumber:' : vm['cpuNumber'],'disk:' : vm['disk']}
ready_for_nodes[index] = {new_vm_name: vm_res}
print(ready_for_nodes)
Вывод:
{
0:
{
'aff-java-7.node.eu.consul':
{
'os:': 'Debian 10.1 x64',
'memory:': 1536,
'cpu:': 2,
'cpuNumber:': 2,
'disk:': 8192
}
},
1:
{
'tgbot-go-7.node.eu.consul':
{
'os:': 'Debian 10.1 x64',
'memory:': 2048,
'cpu:': 4,
'cpuNumber:': 4,
'disk:': 8192
}
}
}