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

Python同结构嵌套字典逐元素减法与差值均值计算实现咨询

实现方案

首先导入依赖库:

import numpy as np

步骤1:生成差值字典C

逻辑:遍历A、B的所有共同键,对每个键对应的两个列表按位置逐一处理:

  • 若当前位置A或B的子列表为空,对应位置返回空列表
  • 若两者都非空,逐元素做A对应元素 - B对应元素的差值计算
C = {}
# A、B键完全一致,直接遍历A的键即可
for key in d['A'].keys():
    a_list = d['A'][key]
    b_list = d['B'][key]
    c_list = []
    # 按位置配对处理子列表
    for a_sub, b_sub in zip(a_list, b_list):
        # 任意一方为空则对应位置返回空列表
        if len(a_sub) == 0 or len(b_sub) == 0:
            c_list.append([])
        else:
            # 逐元素做差后转为普通列表
            diff = (np.array(a_sub) - np.array(b_sub)).tolist()
            c_list.append(diff)
    C[key] = c_list

步骤2:生成均值字典D

逻辑:对C中每个键的值,提取所有非空子列表的元素计算整体均值;如果当前键下无有效元素,可按需设置默认占位值(示例用np.nan占位)

D = {}
for key, c_list in C.items():
    # 提取所有非空子列表的元素,合并为一维集合
    valid_values = []
    for sub_list in c_list:
        if len(sub_list) > 0:
            valid_values.extend(sub_list)
    # 计算均值,无有效元素时返回默认值
    D[key] = np.mean(valid_values) if len(valid_values) > 0 else np.nan

效果验证

用你给出的示例数据测试:

# 示例测试数据
d = {
    'A': {
        'key1': [[3],[],[],[]],
        'key2': [[1,2,3], [], [4,5,6], []]
    },
    'B': {
        'key1': [[],[],[],[]],
        'key2': [[7,8,9], [], [10,11,12], []]
    }
}

运行代码后输出结果:

  • C['key2'] 为 [[-6, -6, -6], [], [-6, -6, -6], []]
  • D['key2'] 为 -6.0,D['key1'] 为 nan

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:36:04