2016-09-02 45 views
0

蟒蛇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"} 
]} 

什麼我的問題呢?

+2

'data ['x']'中的第二項不會有'A'鍵。我不確定你在做什麼,但是如果你使用'item.get('A')'你不會得到'KeyError'。 – elethan

+0

但它不打印第一個 – Scott

+0

您可能會首先獲得「第二個」項目。用'.get'試試看,你應該看到'「B」' – elethan

回答

0

的問題是,你的代碼假定每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'關聯的值,否則會移動到列表中的下一個字典。

+0

謝謝,你救了我:)) – Scott

0

由於@elethan指出的第二個項目就沒有關鍵'A'

你可以做以下

data = json.load(...) 
for item in data['x']: 
    print(item.get('A')) 

這不會得到您的具體JSON輸入任何錯誤,並打印None如果贏了找不到'A'元素。

您還可以將默認值提供給.get(),例如, item.get('A', 'default')

感謝@elethan

+0

'.get()'的默認值是已經'None',所以'None'參數沒有必要AFAIK – elethan

+0

@elethan完全忘了這一點,謝謝! –

1

在每個字典(含不匹配鍵)打印值,用字典的values方法:

data = json.load(...) 
for item in data['x']: 
    print(item.values())