如果我的任何术语有误,请纠正我。
我试图检查python list / dict中是否存在嵌套键。
例如,下面我根据Requests' library's .json()
method返回的列表/字典中是否存在该值的键来为变量分配值(文档中不清楚)究竟是什么回报了。)
这适用于检查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' key,在list / dict中看起来像这样?
readers: {
mendeley: '1',
citeulike: '3',
#etc.
}
提前感谢您的帮助!
答案 0 :(得分:12)
答案 1 :(得分: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是由纽约时报创建的图书馆。