字典转换

时间:2016-08-19 15:51:59

标签: python dictionary

如何将下面字典中列表的元素映射到它们的基本键(即基本键是映射到空列表的键)

{
'1':[],
'2':[],
'3':['1','2'],
'4':[],
'5':[],
'6':['4','5'],
'7':['3','6']
}

会导致

{
'1':[],
'2':[],
'3':{'1':[],'2':[]},
'4':[],
'5':[],
'6':{'4':[],'5':[]},
'7':{'3':{'1':[],'2':[]},'6':{'4':[],'5':[]}}
}

我认为可以使用递归函数来完成。

2 个答案:

答案 0 :(得分:0)

为了让你开始,我会在这条线上提出建议。

def recursiveChange(object):
    if type(object) == type({}):
        #Whats happens when its a dictionary
        recursiveChange(NEWOBJECT)
    if type(object) == type([]):
        #What happens when its a list
        recursiveChange(NEWOBJECT)

每次调用该函数时,它将检查它是什么类型的对象,然后根据需要更改值。有了这个,你应该能够了解你想要的路线,试一试。

答案 1 :(得分:-1)

我的理解是,您希望将['1', '2']等值转换为dict之类的{'1': [], '2': []}

不知道为什么:

'6':['4','5'],
'7':['3','6']

给出:

'6':{'4':[],'5':[]},
'7':{'3':{'1':[],'2':[]},'6':{'4':[],'5':[]}}

但不是:

'6':{'4':[],'5':[]},
'7':{'3': [], '6': []}

递归不是必需的,但你可以在理解中使用字典:

import pprint

a = {
'1':[],
'2':[],
'3':['1','2'],
'4':[],
'5':[],
'6':['4','5'],
'7':['3','6']
}

b = {k: {i: [] for i in v} for k, v in a.items()}

pprint.pprint(b)

你会得到:

{'1': {},
 '2': {},
 '3': {'1': [], '2': []},
 '4': {},
 '5': {},
 '6': {'4': [], '5': []},
 '7': {'3': [], '6': []}}