Skip to main content
 首页 » 编程设计

python之从可迭代的每个元素中删除单个键的优雅方法

2025年05月04日15duanxz

是否可以使用 lambda 来操作可迭代的每个字典?

澄清一下,只想从每个元素中删除 _id 键。

想知道是否有一种优雅的方法来完成这个简单的任务,而无需第 3 方,如 (toolz)、函数或复制 dict 对象。


我没有搜索的可能解决方案。

  1. 传统方式:

    cleansed = {k:v for k,v in data.items() if k not in ['_id'] } 
    
  2. 另一种方式:

    def clean(iterable): 
        for d in iterable: 
            del d['_id'] 
        return 
    
  3. 第 3 方方式:

Python functional approach: remove key from dict using filter

请您参考如下方法:

函数式编程倾向于不改变原始对象,而是返回数据的新修改副本。主要问题是 del 是一个语句,不能在功能上使用。

也许这会让你高兴:

[d.pop('_id') for d in my_dicts] 

这将修改 my_dicts 中的所有字典并从中删除 '_id' 键。结果列表是 _id 值的列表,但字典是在原始 my_dicts 中编辑的。

我根本不建议使用它,因为它不像您的第二个示例那样容易理解。使用函数式编程来改变持久数据一点也不优雅。但是如果你需要...