簡體   English   中英

檢查字典中存在的值時出現鍵錯誤

[英]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.

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