我正在尝试将嵌套字典转换为Python3中的3D数组。我有一个函数来自另一篇文章,它完成了将Nest Dict转换为列表,如下所示
def Convert_Nest_Dictionary_2_List(Dictionary):
local_list = []
for key, value in Dictionary.items():
local_list.append(key)
local_list.extend(Convert_Nest_Dictionary_2_List(value))
return local_list
当我使用此功能时,我收到错误:
`'numpy.ndarray' object has no attribute 'items'`
我假设这是因为我的嵌套字典中的相应值是形状为(96,144)
的多维数组,而不是单个值。
我的嵌套词典非常大,所以我只会在下面显示它的一部分。键入dict RCP45
会返回:
{'Sim1': {'01': {'2005': array([[ 244.94081116, 244.95672607,...
使用3个模拟人,每个模拟中有12个密钥(数月),每个月有61个密钥(2005-2065表示年份),每个对应的值表示全球空间温度数据为(96,144)
数组(纬度和经度)。
我希望结果数组为(2196,94,144)
形状,其中2196代表3*12*61 (sims* Months *years)
如何修改功能来完成此操作?或者也许一起使用不同的方法来实现这个目标?
非常感谢!
答案 0 :(得分:0)
您需要一个基本案例检查(当递归到达您的numpy数组时)。有点像:
def Convert_Nest_Dictionary_2_List(Dictionary):
local_list = []
if isinstance(Dictionary, numpy.ndarray):
return np_array_to_whatever_youre_trying_to_get(Dictionary)
for key, value in Dictionary.items():
local_list.append(key)
local_list.extend(Convert_Nest_Dictionary_2_List(value))
return local_list
虽然变量名称的更改可能是合适的。