在Python中访问dict内部的元素

在Python中访问dict内部的元素,python,list,dictionary,indexing,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': [{

我有一个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
,它应该是give me output
running

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

但它给出了错误

TypeError: list indices must be integers, not str

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


执行
数据[0][“InstanceState”][“Name”]

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

数据={
u'InstanceId':'i-0729fd87c30489d12',u'InstanceState':{
u“代码”:16,u“名称”:“正在运行”
},u“可用区”:“us-east-2a”,u“系统状态”:{
u“状态”:“确定”,u“详细信息”:[{
u'Status':'passed',u'Name':'reachability'
}]
},u‘InstanceStatus’:{
u“状态”:“确定”,u“详细信息”:[{
u'Status':'passed',u'Name':'reachability'
}]
}
}
您的代码现在可以工作了。只需拆下外部方括号。
你在
数据[“InstanceStatus”][“Details”]
字典中犯了同样的错误。

你在
数据[“InstanceStatus”][“Details”]
字典中也犯了同样的错误:你把它放在一个列表中。@Jean-Françoisfar Fair Point;数据不是一个
dict
,而是一个
列表
,正如抛出的异常所显示的那样(倾听异常将让您在大多数时间都能非常快速地了解正在发生的事情)。如果删除外括号,或者访问字典列表中的dict项(长度1),它应该可以正常工作。