如何从字典列表中移除指定键对应重复值的所有字典?
移除字典列表中指定name的所有条目
给定如下字典列表:
l = [{'name': 'Mike', 'age': 31}, {'name': 'Peter', 'age': 29}, {'name': 'Mike', 'age': 44}]
需要移除所有name为Mike的条目,最终得到仅包含Peter的列表。下面是几种高效的实现方式:
方法1:列表推导式(推荐)
这是Python中最简洁且可读性高的实现方式,直接遍历列表并筛选符合条件的元素:
filtered_list = [item for item in l if item['name'] != 'Mike']
执行后filtered_list的结果为:[{'name': 'Peter', 'age': 29}]
方法2:使用filter()函数
如果偏好函数式编程风格,可以用filter()配合匿名函数实现:
filtered_list = list(filter(lambda x: x['name'] != 'Mike', l))
结果与列表推导式一致,但前者在多数场景下的可读性和执行效率更优。
额外注意
如果列表中存在缺失name键的字典,为避免抛出KeyError,可以修改为如下写法:
filtered_list = [item for item in l if item.get('name') != 'Mike']
这样即使某个字典没有name键,也会被保留(item.get('name')返回None,None != 'Mike'结果为True)。
内容的提问来源于stack exchange,提问作者Mikael
相关产品推荐
相关产品推荐

