1

我在 python 中使用 jmespath 模块来搜索嵌套字典。

我遇到的问题是,如果在字典中找不到密钥,我想引发异常。但是,某些键具有 None 值,这是完全有效的。在 jmespath 找到具有 None 值的键或未找到键的两种情况下,它都返回 None。

有什么方法可以区分这两者吗?据我所知,jmespath 没有等效于“函数”。谢谢!

4

1 回答 1

1

这里有关于这个问题的详细讨论 - https://github.com/jmespath/jmespath.py/issues/113

结果contains用于检查密钥是否存在

因此,要检查foo.bar嵌套字典中是否存在,可以使用searchwith arg"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
于 2018-07-25T13:20:19.370 回答