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

如何在Python3中将嵌套字典转换为3D数组?

解决嵌套字典转3D数组时的'numpy.ndarray' object has no attribute 'items'错误

嗨,我来帮你搞定这个问题~

你遇到的这个错误其实很明确:你的嵌套字典里并不是所有层级的value都是字典,其中肯定有某个节点对应的value是numpy数组(numpy.ndarray),而你用的递归函数默认每个value都能调用.items()方法——但numpy数组根本没有这个方法,所以就触发报错啦。

那怎么修改这个函数呢?我们需要在递归的时候加一个类型判断:如果当前的value是字典,才继续递归;如果是numpy数组(或者其他非字典类型),就直接把它处理后加入列表。

修改后的代码可以这样写:

import numpy as np

def Convert_Nest_Dictionary_2_List(Dictionary):
    local_list = []
    for key, value in Dictionary.items():
        local_list.append(key)
        # 若当前value是字典,继续递归遍历
        if isinstance(value, dict):
            local_list.extend(Convert_Nest_Dictionary_2_List(value))
        # 若当前value是numpy数组,先转成普通列表再加入
        elif isinstance(value, np.ndarray):
            local_list.append(value.tolist())
        # 其他非字典类型直接加入列表
        else:
            local_list.append(value)
    return local_list

另外,你最终的目标是转成3D数组,所以拿到转换后的列表后,还需要用np.array()把它转换成numpy数组,再调整成3D形状,比如:

# 假设你的嵌套字典名为nested_dict
result_list = Convert_Nest_Dictionary_2_List(nested_dict)
# 根据你的数据结构调整reshape的参数,比如(2,3,4)这样的3D维度
result_3d_array = np.array(result_list).reshape(你的目标3D形状)

如果不确定最终的3D维度,可以先打印转换后的列表结构,再调整reshape的参数~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:02:05