所以我试图创建一个嵌套的字典,但是我似乎不能完全理解逻辑。
假设我有来自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]}
但这覆盖了第一个问题,而不是附加/推动它,我该如何处理这个问题呢?我似乎不能全神贯注于使用什么钥匙。
感谢您的指导。
您可以使用defaultdict,这与内置字典类似,但将使用默认值创建字典,在您的情况下,默认值将是字典。
from collections import defaultdict res = defaultdict(dict)
通过这段代码,我们创建了一个default dict,它的值default value是dict类型,所以接下来我们要做的是
for row in l: res[row[0]][row[1]] = row[2]
if dict[row[0]] == None: dict[row[0]] = {row[1]:row[2]} else: dict[row[0]][row[1]] = row[2]
是的,因为 dict[row[0]] = 是 dict[1] = 覆盖以前的内容 dict[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]})