是否可以使用 lambda 来操作可迭代的每个字典?
澄清一下,只想从每个元素中删除 _id
键。
想知道是否有一种优雅的方法来完成这个简单的任务,而无需第 3 方,如 (toolz)、函数或复制 dict 对象。
我没有搜索的可能解决方案。
传统方式:
cleansed = {k:v for k,v in data.items() if k not in ['_id'] }
另一种方式:
def clean(iterable): for d in iterable: del d['_id'] return
第 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
中编辑的。
我根本不建议使用它,因为它不像您的第二个示例那样容易理解。使用函数式编程来改变持久数据一点也不优雅。但是如果你需要...
关于python - 从可迭代的每个元素中删除单个键的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41450230/