每个键中具有不同层数的嵌套字典

时间:2020-09-01 08:01:14

标签: python loops dictionary recursion nested

我有如下嵌套的字典

'Internal'

我必须创建以下格式的新字典:

{
    "A": 
        {"B": 
            {"C": 
                {"D": ['1','2','3']
                } 
        }
    },

    "AA": 
        {"BB": 
            {"CC": ['11', '22']} 
        }
}

也就是说,新词典的键是以“ xx”为前缀的原始词典键,值是原始词典的值。

尝试5小时后,我仍然被困住。 有人愿意剥洋葱吗?

以下功能是我的两次尝试。

{"xx-A-B-C-D": ['1','2','3'], "xx-AA-BB-CC": ['11','22']}

1 个答案:

答案 0 :(得分:0)

使用flatten_dict库:

第1步:使用pip install flatten-dict

安装

第2步:

2.1。将flatten函数与字典一起使用,并使用special_reducer确定如何连接值。

d= {
    "A":
        {"B":
            {"C":
                {"D": ['1','2','3']
                }
        }
    },

    "AA":
        {"BB":
            {"CC": ['11', '22']}
        }
}

from flatten_dict import flatten

def special_reducer(k1, k2, seperator='-', prefix='xx'):
    if k1 is None:
        return prefix + seperator + k2
    else:
        return k1 + seperator + k2

r = flatten(d, reducer=special_reducer)

# {'xx-A-B-C-D': ['1', '2', '3'], 'xx-AA-BB-CC': ['11', '22']}
print(r)