辞書型で表現されたjsonデータがある場合、 'results'リストの特定の値と一致するすべての 'type'ノードを見つけるためのpysonicな方法はありますか?もちろん辞書の子孫要素によるPythonicフィルタリング
foundItems = [elem for elem in results if 'type_two' in elem['types']]
あなたはおそらくそのような'type_two'
をハードコーディングするのではなく、変数を使用します:
"results" : [
{
"address_components" : [
... child elements ...
],
"verified" : "some data here",
"geometry" : {
... child elements ...
},
"types" : [ "type_one" ]
},
{
"address_components" : [
... child elements ...
],
"verified" : "some data here",
"geometry" : {
... child elements ...
},
"types" : [ "type_two" ] // filter all items that match this item's value
},
... more elements ...
]
多くの場合、リストの理解に比べてジェネレータ式を使用することが望ましいです。ジェネレータ式は、事前にリスト全体を作成するのではなく、繰り返し実行するときに値を見つけます。 ジェネレータ式は、リスト内包と同じように見えますが、大括弧の代わりに括弧を使用する点を除いては、 ' - (elem ['types']の' type_two 'の場合はelemが結果として得られます) '。関数への唯一の引数としてジェネレータ式を渡すと、冗長な括弧を省略することができます。 –