蟒蛇3.5.1密鑰錯誤打印的同時JSON數據
您好我有以下的JSON和Python代碼,我想打印JSON數據,但它有一個錯誤,指出:
主要錯誤: 'A'
蟒蛇
data = json.load(...)
for item in data['x']
print (item['A'])
JSON
{"x":[
{"A":"B"},
{"C":"D"}
]}
什麼我的問題呢?
蟒蛇3.5.1密鑰錯誤打印的同時JSON數據
您好我有以下的JSON和Python代碼,我想打印JSON數據,但它有一個錯誤,指出:
主要錯誤: 'A'
蟒蛇
data = json.load(...)
for item in data['x']
print (item['A'])
JSON
{"x":[
{"A":"B"},
{"C":"D"}
]}
什麼我的問題呢?
的問題是,你的代碼假定每data['x']
中的項目將有一個密鑰'A'
,但只要您迭代到沒有這樣的密鑰的dict
,您將獲得KeyError
。
嘗試使用item.get('A')
,如果字典中沒有鍵'A'
,將返回None
(或您提供的默認值)。好像你想要做這樣的事情:
data = json.load(...)
for item in data['x']:
value = item.get('A')
if value:
print(value)
else:
continue
如果存在的話這將打印與關鍵'A'
關聯的值,否則會移動到列表中的下一個字典。
謝謝,你救了我:)) – Scott
由於@elethan指出的第二個項目就沒有關鍵'A'
你可以做以下
data = json.load(...)
for item in data['x']:
print(item.get('A'))
這不會得到您的具體JSON輸入任何錯誤,並打印None
如果贏了找不到'A'
元素。
您還可以將默認值提供給.get()
,例如, item.get('A', 'default')
。
感謝@elethan
'.get()'的默認值是已經'None',所以'None'參數沒有必要AFAIK – elethan
@elethan完全忘了這一點,謝謝! –
在每個字典(含不匹配鍵)打印值,用字典的values
方法:
data = json.load(...)
for item in data['x']:
print(item.values())
'data ['x']'中的第二項不會有'A'鍵。我不確定你在做什麼,但是如果你使用'item.get('A')'你不會得到'KeyError'。 – elethan
但它不打印第一個 – Scott
您可能會首先獲得「第二個」項目。用'.get'試試看,你應該看到'「B」' – elethan