当前位置 : 主页 > 编程语言 > python >

python过滤基于键值的词典列表

来源:互联网 收集:自由互联 发布时间:2021-06-25
我有一个字典列表,每个字典都有一个(比如说)’type’的键,它可以有’type1′,’type2’等值.我的目标是将这些字典过滤成相同字典的列表但只有某种“类型”的那些.我想我只是在努力解
我有一个字典列表,每个字典都有一个(比如说)’type’的键,它可以有’type1′,’type2’等值.我的目标是将这些字典过滤成相同字典的列表但只有某种“类型”的那些.我想我只是在努力解决列表/词典理解问题.

所以示例列表看起来像:

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

我有一个关键值列表.比方说:

keyValList = ['type2','type3']

预期结果列表的位置如下:

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

我知道我可以通过一组for循环来做到这一点.我知道必须有一个更简单的方法.我发现这个问题有很多不同的风格,但没有一个真正适合这个问题,并回答了这个问题.我会尝试答案……但他们并没有那么令人印象深刻.可能最好让它开放结束.任何援助将不胜感激.

你可以尝试列表comp

>>> 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'}]
网友评论