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

如何用Python基于多条件过滤包含字典的数组

字典数组的多条件AND过滤实现

需求说明

输入包含字典的数组如下:

contacts = [{
        "email": "test@mail.com",
        "name": "first name"
    },
    {
        "email": "test1@gmail.com",
        "name": "second name"
    }]

需要通过AND逻辑筛选出email等于"test1@gmail.com"且name等于"second name"的元素,预期输出:

{
  "email": "test1@gmail.com",
  "name": "second name"
}

函数封装要求

需将过滤逻辑封装到名为filterData的函数中,函数定义如下:

def filterData(contact_list, email, name):
    # 根据传入的参数返回过滤后的数据

最终实现代码

contacts = [{
    "email": "test@mail.com",
    "name": "first name"
},
{
    "email": "test1@gmail.com",
    "name": "second name"
}]

target_email = 'test1@gmail.com'
target_name = 'second name'

# 定义过滤条件列表
filters = [
    lambda contact: contact['email'] == target_email,  # 按邮箱过滤
    lambda contact: contact['name'] == target_name,   # 按姓名过滤
]

# 执行过滤并打印结果
print(
    list(filter(
        lambda contact: all(func(contact) for func in filters),
        contacts
    ))
)

实现说明

  1. 定义两个lambda表达式分别校验邮箱、姓名与目标值是否匹配
  2. 用all()函数确保所有条件同时满足,实现AND逻辑
  3. 结合Python内置filter()函数完成数组过滤,最后用list()转换为列表输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:35:14