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

如何计算Python中两个嵌套字典的数值差值(delta)

计算嵌套字典数值差值的解决方案

核心思路

从两个嵌套字典的deviceValueMap节点中,筛选出数值型字段(排除字符串状态的ifOperStatus),计算第二个字典对应值与第一个字典的差值,最终生成目标结果字典。

代码实现

# 定义原始字典
d1 = {"device":"ABC","filteredData":{"device_id_1":{"deviceValueMap":{"ifInDiscards":{"i":"5"},"ifInErrors":{"i":"0"},"ifOperStatus":{"s":"up"},"ifOutDiscards":{"i":"0"},"ifOutErrors":{"i":"2"}}}}}
d2 = {"device":"ABC","filteredData":{"device_id_1":{"deviceValueMap":{"ifInDiscards":{"i":"10"},"ifInErrors":{"i":"0"},"ifOperStatus":{"s":"up"},"ifOutDiscards":{"i":"5"},"ifOutErrors":{"i":"13"}}}}}

# 提取目标节点的数值映射
value_map1 = d1["filteredData"]["device_id_1"]["deviceValueMap"]
value_map2 = d2["filteredData"]["device_id_1"]["deviceValueMap"]

# 计算差值
delta = {}
for key in value_map1:
    # 跳过非数值型状态字段
    if key == "ifOperStatus":
        continue
    # 将字符串数值转为整数,计算d2 - d1的差值
    val1 = int(value_map1[key]["i"])
    val2 = int(value_map2[key]["i"])
    delta[key] = val2 - val1

print(delta)

输出结果

{'ifInDiscards': 5, 'ifInErrors': 0, 'ifOutDiscards': 5, 'ifOutErrors': 11}

扩展说明

  • 如果存在多个设备ID(filteredData下有多个键),可以遍历filteredData的所有键,批量计算每个设备的差值
  • 若数值可能为浮点数,将代码中的int()替换为float()即可适配
  • 若需要动态判断数值字段(而非硬编码跳过ifOperStatus),可以通过判断字段值的键是否为i来筛选:if list(value_map1[key].keys())[0] == 'i'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:35:25