从列表列表创建嵌套字典

2024-04-19 12:52:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从列表列表中创建一个嵌套字典。以下是清单

  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}

Tags: youpilareworkheroekeeppar
1条回答
网友
1楼 · 发布于 2024-04-19 12:52:42

double setdefault用于两个嵌套的DICT

最后一部分用于拆分数字。如果超过一位数,则应使用正则表达式

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

相关问题 更多 >