python根据键值过滤字典列表
我有一个字典列表和每个字典的key(比方说)“型”,这可以有值'type1'
,'type2'
等我的目标是过滤掉这些字典到同一个字典列表,但只有一个的那些某些“类型”。我想我真的很在list/dictionary
理解问题。
因此,示例列表如下所示:
exampleSet = [{'type':'type1'},{'type':'type2'},{'type':'type2'}, {'type':'type3'}]
我有一个键值列表。举例来说:
keyValList = ['type2','type3']
预期的结果列表如下所示:
expectedResult = [{'type':'type2'},{'type':'type2'},{'type':'type3'}]
我知道我可以用一组for循环来做到这一点。我知道必须有一个更简单的方法。我发现此问题有很多不同的风格,但没有一个完全符合要求并回答了这个问题。我会尝试给出答案…但是它们并不令人印象深刻。最好让它保持开放状态。任何帮助将不胜感激。
-
您可以尝试列表组合
>>> 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'}]