jmespath:区分未找到的键和具有空值的键
jmespath: Differentiate between a key not found and a key having a null value
我正在使用 python 中的 jmespath 模块来搜索嵌套字典。
我 运行 遇到的问题是,如果在字典中找不到键,我想引发异常。但是,某些键具有 None 值,这是完全有效的。在 jmespath 找到具有 None 值的键或未找到键的两种情况下,它 returns None.
这两者有区别吗?据我所知,jmespath 不等同于 "function." 谢谢!
这里对这个问题进行了详细的讨论 - https://github.com/jmespath/jmespath.py/issues/113
结果是用contains
检查key是否存在
所以要检查 foo.bar
是否存在于嵌套字典中,您可以使用 search
和 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
我正在使用 python 中的 jmespath 模块来搜索嵌套字典。
我 运行 遇到的问题是,如果在字典中找不到键,我想引发异常。但是,某些键具有 None 值,这是完全有效的。在 jmespath 找到具有 None 值的键或未找到键的两种情况下,它 returns None.
这两者有区别吗?据我所知,jmespath 不等同于 "function." 谢谢!
这里对这个问题进行了详细的讨论 - https://github.com/jmespath/jmespath.py/issues/113
结果是用contains
检查key是否存在
所以要检查 foo.bar
是否存在于嵌套字典中,您可以使用 search
和 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