如何检查Python列表/字典中是否存在二级(嵌套)键?
如果我用词不当,请纠正我。
我想检查一个嵌套的键是否存在于一个Python的列表或字典中。
举个例子,下面我根据某个值的键是否存在于通过Requests库的.json()
方法返回的列表或字典中来给一个变量赋值(文档中并没有明确说明它具体返回什么)。
这段代码可以用来检查键是否存在于jsonassoc
列表或字典的第一层:
#works
is_oa = jsonassoc[u'is_oa'] if u'is_oa' in jsonassoc else ""
但是,我不太确定如何检查一个键是否存在于第二层嵌套中。
我尝试过:
#doesn't work:
mendeley = jsonassoc[u'readers'][u'mendeley'] if u'readers'[u'mendeley'] in jsonassoc else "" enter code here
# neither does simply this
mendeley = jsonassoc[u'readers'][u'mendeley'] if u'mendeley' in jsonassoc else ""
我该如何检查,比如说,'mendeley'这个键,它在列表或字典中看起来像这样?
readers: {
mendeley: '1',
citeulike: '3',
#etc.
}
提前感谢任何帮助!
2 个回答
2
你需要类似这样的东西:
mendeley = jsonassoc[u'readers'][u'mendeley'] if 'readers' in jsonassoc and 'mendeley' in jsonassoc['readers']
另外,你也可以用 get
函数来设置默认值:
mendeley = jsonassoc.get('readers', {}).get('mendeley', '')
还有一些库可以用来处理 JSON,这些库允许你访问不存在的键,并返回一些空值,而不是抛出错误。比如 safeJSON 这个库,就是纽约时报创建的。
14