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

Python如何删除嵌套字典中值为非零的键值对

嵌套字典非零键值对删除实现方案

错误原因

你使用的单层推导式逻辑不匹配嵌套字典的结构,存在两处问题:

  • 你的需求是删除内层子字典中值非零的键值对,单层推导式仅能遍历外层字典的键值,无法处理内层的单个键值对
  • 你写的判断条件val.values() != 0.0逻辑不成立,val对应内层子字典,.values()返回的是子字典所有值的可迭代集合,无法直接和单个浮点数0.0做相等判断

正确实现

使用两层嵌套字典推导式,仅保留内层字典中值为0.0的键值对即可:

my_dict = {
    'abcdef': {'1987': 0.0,
      '0544': 0.0,
       '0568': 0.0,
      '3000': 0.0,
      '7095': 0.0,
      '75609': 1.0,
      '56565': 2.0,
      '98656': 3.0,
      '756095': 0.0,
      '23432': 0.0},
    'fgrd': {'1987': 0.0,
      '0544': 0.0,
       '0568': 0.0,
      '3000': 0.0,
      '7095': 0.0,
      '75609': 1.0,
      '56565': 2.0,
      '98656': 3.0,
      '756095': 0.0,
      '23432': 0.0}
}

# 两层推导式处理逻辑
result = {
    outer_key: {
        inner_k: inner_v 
        for inner_k, inner_v in inner_dict.items() 
        if inner_v == 0.0
    } 
    for outer_key, inner_dict in my_dict.items()
}

运行结果

处理后得到的result结构如下,所有值非零的内层键值对已被清除:

{
    'abcdef': {
        '1987': 0.0,
        '0544': 0.0,
        '0568': 0.0,
        '3000': 0.0,
        '7095': 0.0,
        '756095': 0.0,
        '23432': 0.0
    },
    'fgrd': {
        '1987': 0.0,
        '0544': 0.0,
        '0568': 0.0,
        '3000': 0.0,
        '7095': 0.0,
        '756095': 0.0,
        '23432': 0.0
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:39:03