如何用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 )) )
实现说明
- 定义两个lambda表达式分别校验邮箱、姓名与目标值是否匹配
- 用
all()函数确保所有条件同时满足,实现AND逻辑 - 结合Python内置
filter()函数完成数组过滤,最后用list()转换为列表输出
内容的提问来源于stack exchange,提问作者mdkamrul
相关产品推荐
相关产品推荐

