使用值列表作为键将字典转换为嵌套字典

时间:2021-03-11 00:28:49

标签: python-3.x dictionary

我有一本需要转换为嵌套字典的字典。 我需要将键作为键进行传输,列表中的值需要在我的嵌套字典中变成更多带有空值列表的键。

这是我迄今为止创建的代码:

dictionary = {'op': ['Office', 'General'],'r-1' : ['residential', 'industrial']} 
    
    nested_dic = {}
    nested_two = {}
    
    for key, value in dictionary.items():
        print("1-\n",key, value)
        nested_dic.setdefault(key, nested_two)
        print("2-\n", nested_dic)
        print("***************************************************************************************")
        
        for v in value:
            nested_two.setdefault(v, [])
            print("3\n", nested_two)
            print("4-\n", v)
            print("\nnested dictionary:", nested_dic)
            print("***************************************************************************************")
            
    print(nested_dic)

我得到的输出是这样的:

{'op': {'Office': [], 'General': [], 'residential': [], 'industrial': []}, 'r-1': {'Office': [], 'General': [], 'residential': [], 'industrial': []}}

但我需要它是这样的:

correct_nested_dic = {'op': {'office': [], 'General': []},'r-1': {'industrial':[], 'residential': []}}

我正在复制 for 循环中的值,但我无法修复它。

任何帮助将不胜感激, 谢谢

1 个答案:

答案 0 :(得分:0)

找到答案了! 我会发布它以防万一对其他人有用:

dic_2 = {'op': ['Office', 'General'],'r-1' : ['residential', 'industrial']}

nested_dic_2 = {}

for key, value in dic_2.items():
    nested_dic_2.setdefault(key, {})
    
    for v in value:
        nested_dic_2[key].setdefault(v, [])

print(nested_dic_2)

输出:

nested_dic_2 = {'op': {'Office': [], 'General': []}, 'r-1': {'residential': [], 'industrial': []}}