我有以下的辞典 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相关问答推荐

Python网页抓取:代码输出:汤未定义

如何在python中有效地使用多处理和pytube库来加快下载速度?

泛型类型的参数的静态类型

为什么我在BLE中的广告代码在发送包裹之间需要大约1秒

Strawberry FastAPI:如何调用正确的函数?

我用Kivy创建的应用程序在安卓系统上运行时出错.(attributeerror:';class';对象没有属性';_javaclass__cls_storage';)

向前/向后移动导致移动行的数据不可见

tkinter treeview 如何在获取所选项目时将设置的对象作为对象返回

如何将函数映射到所有命名元组的元素?

使用 Python 在特定组的列中设置上限

在 python pandas 中设置条件和分配新值

如何在 VSCode 的在 Cloud Run Emulator 上运行/调试构建设置中添加 SQL 连接

python中两个连续的yield语句如何工作?

Python从base64转换为二进制

为什么 setattr 在绑定方法上失败

为什么不切换到 Python 3.x?

Pandas 的 EMA 与股票的 EMA 不匹配?

如何在多核上运行 Keras?

当默认 pip 为 pip2 时,升级 pip3 的正确格式是什么?

Selenium Python - 处理没有这样的元素异常