キー値に基づいて辞書のリストをフィルタリングする 質問する

キー値に基づいて辞書のリストをフィルタリングする 質問する

辞書のリストがあり、各辞書には (たとえば)「type」というキーがあり、その値は'type1'、、、'type2'などになります。私の目標は、これらの辞書をフィルタリングして、同じ辞書のリストにし、特定の「type」の辞書だけを含めることです。私は、理解に本当に苦労していると思いますlist/dictionary

リストの例は次のようになります。

exampleSet = [{'type':'type1'},{'type':'type2'},{'type':'type2'}, {'type':'type3'}]

キー値のリストがあります。たとえば、次のようになります。

keyValList = ['type2','type3']

予想される結果のリストは次のようになります。

expectedResult = [{'type':'type2'},{'type':'type2'},{'type':'type3'}]

私は、for ループのセットでこれを行うことができることを知っています。しかし、もっと簡単な方法があるはずです。この質問のさまざまなバリエーションを見つけましたが、本当に要件を満たし、質問に答えるものはありませんでした。回答を試みたところ、投稿しましたが、それほど印象的ではありませんでした。おそらく、オープンエンドのままにしておくのが最善でしょう。どんな助けでも大歓迎です。

ベストアンサー1

リストコンプを試すことができます

>>> exampleSet = [{'type':'type1'},{'type':'type2'},{'type':'type2'}, {'type':'type3'}]
>>> keyValList = ['type2','type3']
>>> expectedResult = [d for d in exampleSet if d['type'] in keyValList]
>>> expectedResult
[{'type': 'type2'}, {'type': 'type2'}, {'type': 'type3'}]

もう一つの方法はfilter

>>> list(filter(lambda d: d['type'] in keyValList, exampleSet))
[{'type': 'type2'}, {'type': 'type2'}, {'type': 'type3'}]

おすすめ記事