问题描述
我想根据列表创建嵌套的字典。以下是列表
ls3 = [['YOU','HE','EST8'],['YOU','OLM6'],'SLO','WLR8'],['ARE','KLP','EST6'],'POL','WLR4'],['DOING','TIS','OIL8'],['GREAT','EOL6'],['WORK','KOE','RIW8'],'PNG4'],'ROE','ERC8'],'WQD6'],['KEEP','PAR','KOM8'],'RTW6'],'PIL','XCE4'],'ACE8'],['ROCKING','OUL','AZS6'],'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','OLM6','WLR8']},'ARE': {'KLP': ['EST6','WLR4']},'DOING': {'TIS': ['OIL8']},'GREAT': {'POL': ['EOL6']},'WORK': {'KOE': ['RIW8','PNG4','ERC8','WQD6']},'KEEP': {'PAR': ['KOM8','RTW6','XCE4','ACE8']},'ROCKING': {'OUL': ['AZS6','RVX8']}}
预期输出:
{{'YOU':{'HE':{'EST':8,'OLM':6},'SLO':{'WLR':8}}},{'ARE':{'KLP':{'EST':6},'POL':{'WLR':4}}},and so on}
解决方法
double setdefault用于2个嵌套字典。
最后一部分是分割数字。如果超过一个数字,则应使用正则表达式。
di = {}
for i,j,k in ls3:
di.setdefault(i,{}).setdefault(j,{})[k[:-1]] = int(k[-1])