Python中文件的嵌套字典

2021-09-27 05:33:07 发布

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

因此,我试图创建一个嵌套字典,但我似乎无法围绕逻辑我的头。你知道吗

假设我的输入来自csv:

1,2,3
2,3,4
1,4,5

现在,我想创建一个字典,如下所示:

d ={1:{2:3,4:5}, 2:{3:4}}

这样,对于第一个ID列,我们在子字典中创建与第二个值对应的键。你知道吗

我尝试的方式是:

d[row[0]] = {row[1]:row[2]}

但这会覆盖第一个,而不是附加/推送到它,我将如何处理这个问题?我似乎不知道该用什么钥匙。你知道吗

感谢您的指导。你知道吗

3条回答
网友
1楼 ·

是的,因为dict[row[0]] =dict[1] =覆盖先前dict[1]值的内容 您应该使用:

dict.setdefault(row[0],{})[row[1]] = row[2]

请记住,行[1]必须没有重复项

或者

dict.setdefault(row[0],{}).update({row[1]:row[2]})
网友
2楼 ·
if dict[row[0]] == None:
    dict[row[0]] = {row[1]:row[2]}
else:
    dict[row[0]][row[1]] = row[2]
网友
3楼 ·

您可以使用defaultdict,它与内置字典类似,但将创建具有默认值的字典,在您的情况下,默认值将是字典

from collections import  defaultdict
res = defaultdict(dict)

通过这段代码,我们创建了一个defaultdict,它的值default value的类型是dict,所以接下来我们要做的是

for row in l:
    res[row[0]][row[1]] = row[2]

相关问题