【问题标题】:How to search value and append from a Json Format from a List of Dictionary of List of Dictionary如何从字典列表的字典列表中搜索值并从 Json 格式追加
【发布时间】:2021-08-10 09:21:06
【问题描述】:

我从 API 中检索到这些数据以获取疫苗信息,并且我正在尝试构建一个自动电报机器人。但问题是我无法从 API 的以下响应中提取数据。 回应是:-

{
    "centers": [{
        "center_id":
        7964,
        "name":
        "MCW Vishwakarma Park PHC",
        "address":
        "HEALTH CENTRE VISHWAKARMA PARK, NEAR MCD PRIMARY SCHOOL, KRISHAN KUNJ",
        "state_name":
        "Delhi",
        "district_name":
        "East Delhi",
        "block_name":
        "Not Applicable",
        "pincode":
        110092,
        "lat":
        28,
        "long":
        77,
        "from":
        "09:00:00",
        "to":
        "17:00:00",
        "fee_type":
        "Free",
        "sessions": [{
            "session_id":
            "2f812c88-114e-4fea-8a86-3ddc44c9145a",
            "date":
            "20-05-2021",
            "available_capacity":
            0,
            "min_age_limit":
            45,
            "vaccine":
            "COVAXIN",
            "slots": [
                "09:00AM-11:00AM", "11:00AM-01:00PM", "01:00PM-03:00PM",
                "03:00PM-05:00PM"
            ],
            "available_capacity_dose1":
            10,
            "available_capacity_dose2":
            0
        }, {
            "session_id":
            "1c0bc496-7264-4518-b82e-8786a11a398a",
            "date":
            "22-05-2021",
            "available_capacity":
            0,
            "min_age_limit":
            45,
            "vaccine":
            "COVAXIN",
            "slots": [
                "09:00AM-11:00AM", "11:00AM-01:00PM", "01:00PM-03:00PM",
                "03:00PM-05:00PM"
            ],
            "available_capacity_dose1":
            0,
            "available_capacity_dose2":
            20
        }, {
            "session_id":
            "e388e00b-68a1-49df-ac63-bc63a8e4726e",
            "date":
            "24-05-2021",
            "available_capacity":
            0,
            "min_age_limit":
            45,
            "vaccine":
            "COVAXIN",
            "slots": [
                "09:00AM-11:00AM", "11:00AM-01:00PM", "01:00PM-03:00PM",
                "03:00PM-05:00PM"
            ],
            "available_capacity_dose1":
            0,
            "available_capacity_dose2":
            0
        }, {
            "session_id":
            "1cd3e0c8-86a6-4786-8426-c95d0da46ab4",
            "date":
            "25-05-2021",
            "available_capacity":
            0,
            "min_age_limit":
            45,
            "vaccine":
            "COVAXIN",
            "slots": [
                "09:00AM-11:00AM", "11:00AM-01:00PM", "01:00PM-03:00PM",
                "03:00PM-05:00PM"
            ],
            "available_capacity_dose1":
            21,
            "available_capacity_dose2":
            0
        }]
      }
   ]
}

如何使用available_capacity_dose1 > 0 or available_capacity_dose2 > 0 提取数据并使用键作为日期对其进行排序。

我尝试使用 filter() 进行此操作,但我得到了整个列表作为输出,而不是拥有不同日期的单个会话。

【问题讨论】:

    标签: python json list api dictionary


    【解决方案1】:

    要获得其中一个剂量大于零的会话,您可以执行以下操作

    out = []
    for center in data['centers']:
        for session in center['sessions']:
            if session['available_capacity_dose1'] > 0 or session['available_capacity_dose2'] > 0:
                out.append(session)
    
    print(out)
    

    注意:这会遗漏有关中心的任何信息,如果您有多个中心,您可能希望保留这些信息。添加该信息的一种非常粗略的方法是将out.append(session) 替换为if 语句中的以下内容

    tmp = dict(session)
    tmp['center_id'] = center['center_id']
    out.append(tmp)
    

    最后,要对数据进行排序,您可以执行以下操作

    s_out = sorted(out, key=lambda x: x['date'])
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    相关资源
    最近更新 更多