辞書のリストがあり、各辞書には (たとえば)「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'}]