2017-09-26 1 views
0

Ich habe die Ausgabe von Openstack nova API erhalten.Der Schlüssel konnte nicht aus dem verschachtelten dict abgerufen werden.

{ 
    "u'zoneState": { 
     "u'available": True 
    }, 
    "u'hosts": { 
     "u'compute-1": { 
      "u'nova-compute": { 
       "u'available": True, 
       "u'active": True, 
       "u'updated_at": 
       "u'2017-09-26T10": 
       "04": 49.000000' 
      } 
     }, 
     "u'compute-2": { 
      "u'nova-compute": { 
       "u'available": True, 
       "u'active": True, 
       "u'updated_at": 
       "u'2017-09-26T10": 
       "04": 48.000000' 
      } 
     } 
    }, 
    "u'zoneName": u'nova' 
} 

Ich schreibe Python-Skript, um die Rechenknoten Details in der Availability Zone zu erhalten.

Ich bin in der Lage, den Hostnamen zu bekommen, aber ich versuche Host-Status "u'available": True, und "u'active": True, zu holen, aber ich und nicht in der Lage, die Schlüssel Formular dict zu bekommen.

jede Hilfe wäre willkommen.

Antwort

1

versuchen Sie dies:

for host_key in d["u'hosts"].keys(): 
    for key in d["u'hosts"][host_key]: 
     print d["u'hosts"][host_key][key].get("u'active") 

dies den gewünschten Wert

+0

Danke für die Antwort drucken. Allerdings wirft es immer "None". '>>> für host_key in your_dictionary [ 'Hosts'] Tasten():. ... print your_dictionary [ 'Hosts'] [host_key] .get ('aktiv') ... None' – tgcloud

+0

sehen die aktualisierte Antwort – ddor254

0
for x in openstack_dict["u'hosts"].iterkeys(): 
    if len(openstack_dict["u'hosts"][x]) > 0: 
     for y in openstack_dict["u'hosts"][x].iterkeys(): 
      if len(openstack_dict["u'hosts"][x][y]) > 0: 
       for z in openstack_dict["u'hosts"][x][y].iterkeys(): 
        print x,':',y,':',z,':', openstack_dict["u'hosts"][x][y][z] 
      else: 
       print openstack_dict["u'hosts"][x] 
    else: 
     print openstack_dict["u'hosts"] 
Verwandte Themen