Im использует JMESPath в Python для эффективного анализа больших словарей/списков.Оператор вложенного OR JMESPath
У меня есть список словарей, для каждого словаря я хотел бы получить определенное значение или вернуть null и поместить результат в список. т. е. выбирать поле из каждого словаря, но включать нулевое значение, в котором поле не существует.
Например, мой вход:
[
{
'foo': {'bar': 'yes1'}
},
{
'foo': {'bar': 'yes2'}
},
{
'foo1': {'bar': 'no'}
}
]
Результат я хочу это:
['yes1', 'yes2', None]
Таким образом, для каждого словаря в списке я хочу путь foo.bar
или я хочу вернуть None
если путь не существует. Выражение псевдо JMESPath Я хочу:
[*](foo.bar||`null`)
т.е. выбрать весь список, а затем попробовать путь foo.bar или вернуть буквальный нуль. Однако скобки являются синтаксически неправильными. Как заключить выражение OR в скобки? Лучшее выражение JMESPath I'v получил это:
[*][foo.bar||``][]
Первые два слагаемых [*][foo.bar||``]
места каждого элемента в список вложенных в список [['yes1'], ['yes2'], ['']]
, то []
сглаживает возвращаемый список. Однако это довольно убедительно и не позволяет мне вернуть нуль, поэтому вместо этого я возвращаю пустую строку.
Есть ли у кого-нибудь идеи? Я что-то пропустил синтаксически?
Спасибо в продвижении.
Это в настоящее время не поддерживается, но я предложил функцию карты(), чтобы добавить к языку, который будет делать это: https: // github.com/jmespath/jmespath.site/issues/15 – jamesls