2017-09-26 14 views
0

Openstack nova APIの出力が下です。ネストされたdictからキーを取得できません

{ 
    "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' 
} 

可用性ゾーンに計算ノードの詳細を取得するPythonスクリプトを作成しています。

ホスト名を取得できますが、ホストステータス"u'available": True,"u'active": True,を取得しようとしていますが、私はキーフォームdictを取得できません。

助けていただければ幸いです。

答えて

1

はこれを試してみてください。

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") 

これはあなたの目標値応答のための

+0

感謝を印刷します。しかし、常に「なし」を投げている。 '>>> your_dictionary [ 'ホスト']でhost_keyのキー(): ...印刷your_dictionary [ 'ホスト'] [host_key]に.get( 'アクティブ') ... NONE' – tgcloud

+0

参照更新された答え – 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"] 
関連する問題