我在 Python 中使用JMESPath来有效地解析大型字典/列表。
我有一个字典列表,对于每个字典,我想获取某个值或返回null
并将结果放入列表中。即即时从每个字典中选择一个字段,但包括一个字段不存在的空值。
例如,我的输入是:
[
{
'foo': {'bar': 'yes1'}
},
{
'foo': {'bar': 'yes2'}
},
{
'foo1': {'bar': 'no'}
}
]
我想要的结果是:
['yes1', 'yes2', None]
因此,对于列表中的每个字典,我想要路径,或者如果路径不存在,foo.bar
我想要返回。None
我想要的伪 JMESPath 表达式是:
[*]( foo.bar||`null` )
即选择所有列表,然后尝试路径 foo.bar 或返回文字 null。但是括号在语法上是不正确的。如何将 OR 表达式封装在括号中?我得到的最好的 JMESPath 表达式是:
[*][foo.bar||``][]
前两个术语[*][foo.bar||``]
将每个元素放入嵌套在列表中的列表中[['yes1'], ['yes2'], ['']]
,然后[]
将返回的列表展平。然而,这很令人困惑,并阻止我返回一个空值,所以我返回一个空字符串。
有没有人有任何想法?我在语法上错过了什么吗?