我有一个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
答案 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"]
字典犯了同样的错误。