【问题标题】:Extracting information from json input in python on the basis of other field's value根据其他字段的值从python中的json输入中提取信息
【发布时间】:2023-04-02 15:02:02
【问题描述】:
{
    "Steps": [
        {
            "Status": {
                "State": "PENDING",
                "StateChangeReason": {}
            },
            "ActionOnFailure": "CANCEL_AND_WAIT",
            "Name": "ABCD"
        },
        {
            "Status": {
                "State": "COMPLETED",
                "StateChangeReason": {}
            },
            "ActionOnFailure": "CANCEL_AND_WAIT",
            "Name": "KLMN"
        },
        {
            "Status": {
                "Timeline": {
                    "CreationDateTime": 1469815629.4289999
                },
                "State": "PENDING",
                "StateChangeReason": {}
            },
            "ActionOnFailure": "TERMINATE_CLUSTER",
            "Name": "XYZ"
        }
    ]
}

我想检查名称为“KLMN”的步骤的状态是否已完成。我如何在 python 中做到这一点。

python -c '导入 json,sys;obj=json.load(sys.stdin);print obj[“步骤”]....'

我应该如何编写打印步骤来打印 COMPLETED

【问题讨论】:

  • 您已经有了将 JSON 加载到 Python 对象中的代码。您所要做的就是遍历该列表并在该列表中找到与您想要的名称匹配的字典。您已经解决了 JSON 加载部分;这只是一个带有字典的 Python 列表问题

标签: python json


【解决方案1】:

你可以输入这个:

[step['Status']['State'] for step in data['Steps'] if step['Name']=='KLMN']

data 是您的数据结构。你会得到:

['COMPLETED']

这是一个元素的列表。

【讨论】:

  • 我把它当作 [u'COMPLETED']
【解决方案2】:
steps = {
    "Steps": [
        {
            "Status": {
                "State": "PENDING",
                "StateChangeReason": {}
            },
            "ActionOnFailure": "CANCEL_AND_WAIT",
            "Name": "ABCD"
        },
        {
            "Status": {
                "State": "COMPLETED",
                "StateChangeReason": {}
            },
            "ActionOnFailure": "CANCEL_AND_WAIT",
            "Name": "KLMN"
        },
        {
            "Status": {
                "Timeline": {
                    "CreationDateTime": 1469815629.4289999
                },
                "State": "PENDING",
                "StateChangeReason": {}
            },
            "ActionOnFailure": "TERMINATE_CLUSTER",
            "Name": "XYZ"
        }
    ]
}

if [step["Status"]["State"] for step in steps['Steps'] if step["Name"] == "KLMN"][0] == 'COMPLETED':
    #Do something

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    相关资源
    最近更新 更多