Py学习  »  Python

python文件中的嵌套字典

Safder • 6 年前 • 1450 次点击  

所以我试图创建一个嵌套的字典,但是我似乎不能完全理解逻辑。

假设我有来自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]}

但这覆盖了第一个问题,而不是附加/推动它,我该如何处理这个问题呢?我似乎不能全神贯注于使用什么钥匙。

感谢您的指导。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39350
文章 [ 3 ]  |  最新文章 6 年前
Djaballah DJEDID
Reply   •   1 楼
Djaballah DJEDID    6 年前

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

from collections import  defaultdict
res = defaultdict(dict)

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

for row in l:
    res[row[0]][row[1]] = row[2]
Guilherme Lopes
Reply   •   2 楼
Guilherme Lopes    6 年前
if dict[row[0]] == None:
    dict[row[0]] = {row[1]:row[2]}
else:
    dict[row[0]][row[1]] = row[2]
snamef
Reply   •   3 楼
snamef    6 年前

是的,因为 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]})