python根据键值过滤字典列表

发布于 2021-01-29 19:32:41

我有一个字典列表和每个字典的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循环来做到这一点。我知道必须有一个更简单的方法。我发现此问题有很多不同的风格,但没有一个完全符合要求并回答了这个问题。我会尝试给出答案…但是它们并不令人印象深刻。最好让它保持开放状态。任何帮助将不胜感激。

关注者
0
被浏览
212
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以尝试列表组合

    >>> 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'}]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看