Python:如何用简洁方法从字典列表中筛选保留指定键值条件的字典
优雅过滤字典列表的两种方法
给定原始字典列表:
my_dict = [{'name': 'weather', 'result': 'good'}, {'name': 'weather', 'result': 'bad'}, {'name': 'weather', 'result': 'average'}, {'name': 'wind', 'result': 'strong'}, {'name': 'water', 'result': 'high'}]
要保留所有字典,仅排除name为weather且result不等于good的项,推荐以下两种优雅实现方式:
1. 列表推导式(推荐,Pythonic且易读)
列表推导式是处理这类过滤场景最常用的方式,逻辑清晰且性能优异:
filtered_dict = [d for d in my_dict if not (d['name'] == 'weather' and d['result'] != 'good')]
逻辑说明:遍历列表中的每个字典d,仅当**不满足(name是weather且result不是good)**时保留该字典——也就是要么name不是weather,要么name是weather但result为good。
2. filter函数结合lambda
如果偏好函数式风格,可以用filter配合匿名函数实现:
filtered_dict = list(filter(lambda d: not (d['name'] == 'weather' and d['result'] != 'good'), my_dict))
逻辑说明:filter会筛选出符合lambda条件的元素,最后用list()将迭代器转为列表,效果和列表推导式完全一致。
执行上述任意一种方法后,filtered_dict都会得到预期结果:
[{'name': 'weather', 'result': 'good'}, {'name': 'wind', 'result': 'strong'}, {'name': 'water', 'result': 'high'}]
内容的提问来源于stack exchange,提问作者Kjurczak
相关产品推荐
相关产品推荐

