在Python中访问dict中的元素

时间:2017-10-26 07:52:48

标签: python list dictionary indexing

我有一个Python dict,我正在尝试访问其中的元素,

data = [{
    u 'InstanceId': 'i-0729fd87c30489d12', u 'InstanceState': {
        u 'Code': 16, u 'Name': 'running'
    }, u 'AvailabilityZone': 'us-east-2a', u 'SystemStatus': {
        u 'Status': 'ok', u 'Details': [{
            u 'Status': 'passed', u 'Name': 'reachability'
        }]
    }, u 'InstanceStatus': {
        u 'Status': 'ok', u 'Details': [{
            u 'Status': 'passed', u 'Name': 'reachability'
        }]
    }
}]

Python版本:2.7

我想访问元素Name,它应该给我输出running

我正在使用的命令,data["InstanceState"]["Name"]

但是它给出了错误,

TypeError: list indices must be integers, not str

2 个答案:

答案 0 :(得分:2)

您认为自己正在访问的词典实际上位于列表中。更具体地说,它是列表data中的第一项(是的,数据是列表)。

执行data[0]["InstanceState"]["Name"]

答案 1 :(得分:1)

您不小心将字典放入包含一个元素的列表中。

data = {
    u 'InstanceId': 'i-0729fd87c30489d12', u 'InstanceState': {
        u 'Code': 16, u 'Name': 'running'
    }, u 'AvailabilityZone': 'us-east-2a', u 'SystemStatus': {
        u 'Status': 'ok', u 'Details': [{
            u 'Status': 'passed', u 'Name': 'reachability'
        }]
    }, u 'InstanceStatus': {
        u 'Status': 'ok', u 'Details': [{
            u 'Status': 'passed', u 'Name': 'reachability'
        }]
    }
}

您的代码现在可以使用了。只需删除外方括号。 您使用data["InstanceStatus"]["Details"]字典犯了同样的错误。