簡體   English   中英

從列表列表創建嵌套字典

[英]create nested dictionary from list of lists

我想從列表列表中創建一個嵌套字典。 以下是名單

  ls3 = [['YOU', 'HE', 'EST8'],
 ['YOU', 'HE', 'OLM6'],
 ['YOU', 'SLO', 'WLR8'],
 ['ARE', 'KLP', 'EST6'],
 ['ARE', 'POL', 'WLR4'],
 ['DOING', 'TIS', 'OIL8'],
 ['GREAT', 'POL', 'EOL6'],
 ['WORK', 'KOE', 'RIW8'],
 ['WORK', 'KOE', 'PNG4'],
 ['WORK', 'ROE', 'ERC8'],
 ['WORK', 'ROE', 'WQD6'],
 ['KEEP', 'PAR', 'KOM8'],
 ['KEEP', 'PAR', 'RTW6'],
 ['KEEP', 'PIL', 'XCE4'],
 ['KEEP', 'PIL', 'ACE8'],
 ['ROCKING', 'OUL', 'AZS6'],
 ['ROCKING', 'OUL', 'RVX8']]

下面是我的代碼,到目前為止我能夠創建這個:

di = {}
di2 = {}
for i,j,k in ls3:
   di.setdefault(i, []).extend([j,k])
for i,j in di.items(): 
   di2.update({i:{j[0]:j[1:]}})

我的輸出:

{'YOU': {'HE': ['EST8', 'HE', 'OLM6', 'SLO', 'WLR8']},
 'ARE': {'KLP': ['EST6', 'POL', 'WLR4']},
 'DOING': {'TIS': ['OIL8']},
 'GREAT': {'POL': ['EOL6']},
 'WORK': {'KOE': ['RIW8', 'KOE', 'PNG4', 'ROE', 'ERC8', 'ROE', 'WQD6']},
 'KEEP': {'PAR': ['KOM8', 'PAR', 'RTW6', 'PIL', 'XCE4', 'PIL', 'ACE8']},
 'ROCKING': {'OUL': ['AZS6', 'OUL', 'RVX8']}}

預期輸出:

{{'YOU':{'HE':{'EST':8,'OLM':6},'SLO':{'WLR':8}}}, 
{'ARE':{'KLP':{'EST':6},'POL':{'WLR':4}}}, and so on}

雙 setdefault 用於 2 個嵌套的字典。

最后一部分用於分割數字。 如果超過一位數,則應使用正則表達式。

di = {}
for i,j,k in ls3:
   di.setdefault(i, {}).setdefault(j, {})[k[:-1]] = int(k[-1])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM