【问题标题】:Access the element inside of dict in Python在 Python 中访问 dict 内部的元素
【发布时间】:2017-10-26 07:52:48
【问题描述】:

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

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

【问题讨论】:

  • data 不是dict,而是list,正如抛出的异常向您展示的那样(聆听异常可以让您在大多数情况下快速了解正在发生的事情) .如果您删除外括号,或访问字典列表(长度为 1)中的 dict 项,它应该可以正常工作。

标签: python list dictionary indexing


【解决方案1】:

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

data[0]["InstanceState"]["Name"]

【讨论】:

    【解决方案2】:

    你不小心把你的字典放在一个只有一个元素的列表中。

    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"] 字典也犯了同样的错误。

    【讨论】:

    • 你也犯了data["InstanceStatus"]["Details"]字典的错误:你把它放在一个列表中。
    • @Jean-FrançoisFabre Fair Point;现在会这样做。
    猜你喜欢
    • 2022-12-06
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 2012-01-28
    • 2021-11-01
    • 2016-03-10
    相关资源
    最近更新 更多