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

Python中如何使用多个键搜索字典列表实现多条件筛选

Python字典列表多条件筛选方案

场景对应最简实现

直接通过列表推导式叠加多个匹配条件即可:

# 你的原始数据
data = [
    {"name": "John", "surname": "Doe", "age": 20},
    {"name": "Anna", "surname": "Smith", "age": 20},
    {"name": "John", "surname": "Doe", "age": 22},
]

# 多条件筛选,多个条件用and连接
filtered_data = [item for item in data if item["name"] == "John" and item["surname"] == "Doe"]

运行后filtered_data就是你需要的输出结果。

通用多条件封装(支持任意数量匹配键)

如果后续需要适配更多匹配条件,可以封装为通用函数,无需重复修改判断逻辑:

from typing import List, Dict

def filter_dict_list(data: List[Dict], match_rules: Dict) -> List[Dict]:
    """
    从字典列表中筛选出匹配所有规则的字典
    :param data: 待筛选的字典列表
    :param match_rules: 匹配规则,键为需要匹配的字典key,值为对应的目标值
    """
    return [
        item for item in data
        # all()会判断所有规则都满足才返回True,任意条件不匹配直接终止当前项判断
        if all(item.get(key) == value for key, value in match_rules.items())
    ]

调用示例:

# 传入需要匹配的任意数量规则即可
rules = {"name": "John", "surname": "Doe"}
filtered_data = filter_dict_list(data, rules)

补充说明

  • 若你能确定所有待筛选的字典都包含需要匹配的key,可以把item.get(key)替换为item[key],执行效率略高;如果存在缺key的情况,item.get(key)会返回None,不会抛出异常,自动判定为不匹配。
  • 若需要实现或逻辑匹配(满足任意一个条件即可),把代码中的all()替换为any()即可。

内容的提问来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:57:03