You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 02:03:18