2016-08-19 63 views
-5

如何名單在字典中的元素映射低於他們的基本密鑰(即基本按鍵映射到空列表的那些)字典改造

{ 
'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':[]}} 
} 

我認爲這可以使用遞歸函數來完成。

+1

請分享你的代碼和錯誤,如果有的話。 –

+1

我認爲這可能也是可以做到的。我們開始做吧!你先來。 –

+0

請檢查此鏈接http://stackoverflow.com/help/how-to-ask –

回答

-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': []}} 
+1

這甚至沒有接近預期的結果。 –

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) 

每次函數被調用時,它都會檢查它是什麼類型的對象,然後根據需要更改這些值。有了這個,你應該能夠了解你想要採取的路線,試試看。