簡體   English   中英

如何從字典列表的字典列表中搜索 Json 格式的值和 append

[英]How to search value and append from a Json Format from a List of Dictionary of List of Dictionary

我從 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()執行此操作,但我將整個列表作為 output 而不是具有不同日期的單個會話。

要獲得其中一個劑量大於零的會話,您可以執行以下操作

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'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM