我正在python中使用jmespath模块搜索嵌套字典。
我遇到的问题是,如果字典中找不到键,我想引发一个异常。但是,某些键具有“无”值,这是完全有效的。在两种情况下,jmespath都找到具有None值的键,或者找不到键,则返回None。
有什么办法可以区分两者吗?据我所知,jmespath没有等同于“功能”。谢谢!
答案 0 :(得分:0)
此处对此问题进行了详细讨论-https://github.com/jmespath/jmespath.py/issues/113
结果是使用contains
检查密钥是否存在
因此,要检查嵌套字典中是否存在foo.bar
,可以将search
与参数"contains(keys(foo), 'bar')"
一起使用
>>> print (jmespath.search('foo.bar', {'foo': {'bar': None}}))
None
>>> jmespath.search("contains(keys(foo), 'bar')", {'foo': {'bar': None}})
True
>>> jmespath.search("contains(keys(foo), 'bar2')", {'foo': {'bar': None}})
False