无法从嵌套的dict中获取密钥

时间:2017-09-26 11:46:42

标签: python json python-2.7 dictionary nested

我从Openstack nova API获得了以下输出。

{
    "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获取密钥。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分: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")

这将打印您想要的值

答案 1 :(得分: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"]