如何将嵌套字典转换为3D数组

时间:2018-04-19 13:39:05

标签: python list dictionary

我正在尝试将嵌套字典转换为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)

如何修改功能来完成此操作?或者也许一起使用不同的方法来实现这个目标?

非常感谢!

1 个答案:

答案 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

虽然变量名称的更改可能是合适的。