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

Python:如何移除字典列表中所有字典值均为0的键?

移除字典列表中所有值均为0的键

给定字典列表:

my_list = [{'a':0, 'b':2, 'c':1, 'd': 0}, 
           {'a':0, 'b':0, 'c':0, 'd': 0},
           {'a':0, 'b':3, 'c':0, 'd': 0}
]

需求是移除所有字典中对应值均为0的键,最终输出应为:

[{'b':2, 'c':1}, 
 {'b':0, 'c':0},
 {'b':3, 'c':0}]

你当前用嵌套循环实现了需求,这里提供更简洁的优化方案:

优化实现

分步实现(可读性优先)

先筛选出需要保留的键(即至少在一个字典中值不为0的键),再批量处理每个字典:

# 筛选保留键:只要有一个字典中该键值不为0就保留
keep_keys = {key for key in my_list[0] if any(d[key] != 0 for d in my_list)}

# 生成结果列表
result = [{k: v for k, v in d.items() if k in keep_keys} for d in my_list]

单行紧凑实现

如果追求代码简洁,可以把两步合并:

result = [{k: v for k, v in d.items() if any(d2[k] != 0 for d2 in my_list)} for d in my_list]

说明

  • 用any()替代求和判断,逻辑更直接:只要某个键在任意一个字典中的值不为0,就保留该键,避免了手动累加计算总和的冗余步骤。
  • 集合推导式和列表推导式的组合,让代码更紧凑且可读性良好,无需维护额外的待删除键列表。

内容的提问来源于stack exchange,提问作者F. Shahid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:43:27