3 回答

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個贊
您可以使用requests
從服務(wù)器 URL 獲取 JSON 數(shù)據(jù),然后構(gòu)造一個新字典作為country
鍵:
from requests import get
URL = "https://coronavirus-19-api.herokuapp.com/countries"
req = get(URL).json()
result = {obj['country']: {k: v for k, v in obj.items() if k != 'country'} for obj in req}
print(result)
輸出:
{'China': {'cases': 80894, 'todayCases': 13, 'deaths': 3237, 'todayDeaths': 11, 'recovered': 69614, 'active': 8043, 'critical': 2622}, 'Italy': {'cases': 31506, 'todayCases': 0, 'deaths': 2503, 'todayDeaths': 0, 'recovered': 2941, 'active': 26062, 'critical': 2060}...
現(xiàn)在您可以在O(1)時間內(nèi)訪問數(shù)據(jù),而不是進(jìn)行O(N)線性掃描:
print(result["Czechia"])
# {'cases': 464, 'todayCases': 30, 'deaths': 0, 'todayDeaths': 0, 'recovered': 3, 'active': 461, 'critical': 2}
注意:確保req.status_code200 OK 或您期望從服務(wù)器收到的任何其他信息也可能是安全的。

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個贊
只是為您提供了使用 pythonurllib
模塊的另一種方法。
from urllib.request import urlopen
##import ast
import json
def Corona_Tracker():
? ? res = urlopen('https://coronavirus-19-api.herokuapp.com/countries')
? ? result = res.read().strip()
? ? result_str = json.loads(result)
? ? return result_str
if __name__ == "__main__":
? ? result_str=Corona_Tracker()
? ? while True:
? ? ? ? for data in result_str:
? ? ? ? ? ? if data['country'] == "India":
? ? ? ? ? ? ? ? print(data)
只需替換India為您的國家/地區(qū),它就會給出以下輸出
>>> {'country': 'India', 'cases': 148, 'todayCases': 5, 'deaths': 3, 'todayDeaths': 0, 'recovered': 14, 'active': 131, 'critical': 0}

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個贊
In [1]: import requests
...: import json
...:
...: data = requests.get('https://coronavirus-19-api.herokuapp.com/countries').json()
...: result = next(item for item in data if item["country"] == "Czechia")
...: print(json.dumps(result, indent=4))
{
"country": "Czechia",
"cases": 464,
"todayCases": 30,
"deaths": 0,
"todayDeaths": 0,
"recovered": 3,
"active": 461,
"critical": 2
}
In [2]:
- 3 回答
- 0 關(guān)注
- 174 瀏覽
添加回答
舉報