我有以下的辞典 list :

lst = [{'a':1, 'b':2, 'c':3}, {'a':1, 'b':2, 'd':3}, {'a':1, 'c':2, 'k':3}, {'d':1, 'k':2, 'l':3}]

我想过滤词典列表(在我的例子中,它是一个包含数千个甚至更多的词典的列表,不同的键有一些重叠),以包含所有有键的词典:["a","b"].我只想将每个词典过滤到这ab个键,如果它们不存在,请不要在最终列表中包括词典.我正在使用:

[{"a": d.get("a"), "b": d.get("b")} for d in lst]

请建议一个优雅的方法来解决它.

推荐答案

我已经想明白了,这是我的替代方案:

lst = [{'a':1, 'b':2, 'c':3}, {'a':1, 'b':2, 'd':3}, {'a':1, 'c':2, 'k':3}, {'d':1, 'k':2, 'l':3}]
keys = set("ab")
[i for i in [{k: d.get(k) for k in keys if k in d} for d in lst] if i]

给出所需的答案:

[{'b': 2, 'a': 1}, {'b': 2, 'a': 1}, {'a': 1}]

Python-3.x相关问答推荐

为什么我必须在绘制椭圆时代码等于两次?''

我有个问题继承遗产合伙人

是否可以使用参数对Flask重定向?

Python将类实例变量转换为嵌套 struct

regexp多重前瞻行为的解释

汉明距离:涉及按位运算的逻辑步骤不清楚

从 LeetCode 的 Python 解决方案类中理解关键字 self

DynamoDB - boto3 - batch_write_item:提供的关键元素与架构不匹配

当我判断另一个 checkButton 时,如何判断两个 python tkinter checkButtons?

通过点和线计算CV2 Homography

如何将虚拟变量列转换为多列?

聚合(aggregate)为最多包含两个元素的列表

使用一周的特定第一天将每日日期转换为每周

为直方图中的每个 bin 绘制不同的 colored颜色 (Matplotlib)

Python3 AttributeError:列表对象没有属性清除

如何使用pandas python获取数据框中每列的最大长度

是否有与 Laravel 4 等效的 python?

Python 3 中的连接列表

从 csv 中删除单行而不复制文件

如何从 Base64 转换为字符串 Python 3.2