打印json数据时出现键错误

时间:2016-09-02 21:07:42

标签: python json

python 3.5.1

嗨,我有以下json和python代码,我想打印json数据,但它有一个错误,说:

  
    

关键错误:' A'

  

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

JSON

{"x":[
    {"A":"B"},
    {"C":"D"}
]}

我的问题是什么?

3 个答案:

答案 0 :(得分:1)

要在每个字典中打印值(使用不匹配的键),请使用字典的values方法:

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

答案 1 :(得分:0)

正如@elethan指出的那样,第二个项目没有键'A'

您可以执行以下操作

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

您的特定json输入不会出现任何错误,如果它在元素中找不到None键,则打印'A'

您还可以为.get()提供默认值,例如item.get('A', 'default')

谢谢@elethan

答案 2 :(得分:0)

问题在于,您的代码假定--unshallow中的每个项都有一个键data['x'],但只要您迭代到没有这样一个键的'A',将获得dict

如果词典中没有键KeyError,请尝试使用item.get('A'),它将返回None(或您提供的默认值)。看起来你想做这样的事情:

'A'

这将打印与键data = json.load(...) for item in data['x']: value = item.get('A') if value: print(value) else: continue 相关联的值(如果存在),否则它将移至列表中的下一个字典。