Python中如何优化基于指定键值全为0的字典列表过滤逻辑?
简洁实现方案
核心思路
筛选字典列表中满足「filter_list内所有键对应值全为0」的字典,用filter+all()或列表推导式都能实现简洁写法,以下是具体方案:
方案1:用filter+lambda+all()
如果能确保所有字典都包含filter_list中的所有键,直接检查值是否为0:
filtered_dicts = list(filter(lambda d: all(d[key] == 0 for key in filter_list), list_of_dict))
如果字典可能缺少filter_list中的键(缺少则视为不满足条件),用get()设置非0默认值:
filtered_dicts = list(filter(lambda d: all(d.get(key, 1) == 0 for key in filter_list), list_of_dict))
方案2:列表推导式(更易读)
Python中列表推导式的可读性通常优于filter+lambda,性能也相当:
# 字典包含所有filter_list键的情况 filtered_dicts = [d for d in list_of_dict if all(d[key] == 0 for key in filter_list)] # 字典可能缺键的情况 filtered_dicts = [d for d in list_of_dict if all(d.get(key, 1) == 0 for key in filter_list)]
内容的提问来源于stack exchange,提问作者Asif Iqbal
相关产品推荐
相关产品推荐

