[英]keyerror while checking for values that exists in a dictionary
我在keyerror
中不斷收到密鑰錯誤。 我正在使用requests
並取回具有 3 個值的json
。 我試圖只提取海拔。
r = requests.get(api_url +str(lat) +"," +str(longi) )
resp = json.loads(r.text)
print(resp)
print(resp['elevation'])
這是對resp
的回應:
{'results': [{'latitude': 30.654543, 'longitude': 35.235351, 'elevation': -80}]}
這是錯誤:
KeyError: 'elevation'
如果你格式化 JSON ( resp
) 有點容易理解,你會得到這樣的:
{
"results":[
{
"latitude":30.654543,
"longitude":35.235351,
"elevation":-80
}
]
}
(我用過這個工具)
您可以看到“頂層”是一個object (作為 python dict
加載),帶有一個鍵: "results"
,包含一個對象數組(作為dict
list
加載)
resp['results']
將是[{'latitude': 30.654543, 'longitude': 35.235351, 'elevation': -80}]
- 所述數組resp['results'][0]
將是該數組的第一個元素: {'latitude': 30.654543, 'longitude': 35.235351, 'elevation': -80}
resp['results'][0]['elevation']
將是-80
我建議使用for
循環遍歷resp['results']
的元素來處理所有結果。
響應是一個字典,其“結果”鍵包含一個字典列表。 在您的情況下,此列表僅包含一個條目。 所以,你必須遍歷整個路徑才能得到你想要的值。 嘗試:resp['results'][0]['elevation']
它以一個列表(保存一個字典)作為值來響應。 因此,您可以使用 resp["results"][0]["elevation"] 訪問,因為“elevation”不在結果中,而是在 results[0](列表結果的零索引)中,您可以通過“[{ }]”表示一個包含字典的列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.