我試圖讀取JSON文件(並最終將內容保存到數據庫中),但運行下面的代碼時出現KeyError錯誤。 See sample JSON供參考。從JSON文件中迭代字典時出現Python KeyError
在JSON文件中所有情況下都不存在密鑰'durationTimeFrom'
和'durationTimeTo'
(只有當eventType
是80
時,我認爲)。
如何在嘗試讀取值之前正確識別丟失的密鑰,以及/或者如何爲沒有密鑰的項目插入虛擬密鑰?
我已經搜索了Google/StackOverflow並嘗試使用if key in dict:
和dict.get(key)
,但沒有成功。
import json
source = "feed_traffic.json" # JSON file to process
data = json.loads(open(source).read()) # Process JSON
total = data["events"]["totalCount"]
index = 0
events = data["events"]["list"][index:total]
for event in events:
eid = event["id"]
type = event['eventType']
header = event['headingText']
lat = event['latitude']
long = event['longitude']
created = event['created']
updated = event['updated']
expires = event['expireTime']
validFrom = event['durationTimeFrom']
validTo = event['durationTimeTo']
status = event['status']
# Just to check all is well, out data in console
print("Traffic Event", index, ":", eid, "-", type, "-", header, "(", long, ",", lat, ")")
index = index+1
你試過執行錯誤和異常處理嗎? https://docs.python.org/2/tutorial/errors.html – glls
event.get('id')如果密鑰不存在則返回None – Richy
'help(dict.get)'''說''dget k [,d]) - > D [k]如果k在D中,否則爲d。 d默認爲None.'您可以提供您自己的默認值。假設你想讓默認ID爲-1,你可以使用'eid = event.get(「id」,-1)'。 – tdelaney