Python でJMESPathを使用して、大きな辞書/リストを効率的に解析しています。
辞書のリストがあります。辞書ごとに、特定の値を取得するかnull
、結果をリストに入れたいと考えています。つまり、各辞書からフィールドを選択していますが、フィールドが存在しない場所に 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||``][]
最初の 2 つの項[*][foo.bar||``]
は、各要素を list にネストされたリストに配置し[['yes1'], ['yes2'], ['']]
、[]
返されたリストを平坦化します。ただし、これは非常に複雑で、null を返すことができないため、代わりに空の文字列を返します。
誰にもアイデアはありますか?構文的に何かが欠けていますか?