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

Python如何从嵌套字典中筛选value为负数的unit对应条目

嵌套字典过滤负数value条目实现方案

原有代码核心问题

  1. 负数判断逻辑不可靠:仅判断字符串包含-,遇到含破折号的非数字串、正数字符串带-后缀等异常场景会出现误判,无法适配合法数值的通用识别
  2. 列表修改逻辑错误:未清理原列表中不符合要求的条目,仅追加最后一次匹配到的符合条件的条目,最终结果会保留错误数据

正确实现

版本1:直观循环写法(适配需要额外异常处理、自定义逻辑的场景)

dic = {
    'a': [{'unit': 'x', 'value': '1', 'type':'int'},{'unit': '19', 'value':'-1', 'input':'man'},{'unit': 'y', 'value':'-2'}],
    'b': [{'unit':'b', 'value': '3', 'type':'int'},{'unit': 'g', 'value':'3'},{'unit': 'tol', 'value':'-12'}]
}

for k in dic:
    filtered_items = []
    for item in dic[k]:
        try:
            # 转为浮点型兼容整数、小数负数判断,确定都是整数可替换为int()
            if float(item['value']) < 0:
                filtered_items.append(item)
        except ValueError:
            # 非合法数值的条目可按需求调整处理逻辑,此处默认跳过
            continue
    dic[k] = filtered_items

版本2:简洁推导式写法(无特殊处理需求时优先使用)

dic = {
    k: [item for item in v if float(item['value']) < 0]
    for k, v in dic.items()
}

运行结果

执行后dic的输出和你预期的结果完全一致:

{'a': [{'unit': '19', 'value': '-1', 'input': 'man'}, {'unit': 'y', 'value': '-2'}], 'b': [{'unit': 'tol', 'value': '-12'}]}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:27:04