如何将下面字典中列表的元素映射到它们的基本键(即基本键是映射到空列表的键)
{
'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':[]}}
}
我认为可以使用递归函数来完成。
答案 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': []}}