向嵌套字典中添加项目

3

我试图读取一个列表中的嵌套列表,并将键和值添加到字典中的另一个字典中。但我得到了“str”对象不支持赋值的错误。

代码:

report_dict = dict()
axis_list = []
results = self.report_data(conn)
for row in results:
  try:
    report_dict[row[0]] = row[3]
    report_dict[row[0]][row[3]] = row[1]
  except IndexError:
    None 
  print(report_dict)

结果:

report_dict = { abc: {qwe:asd}, …..}

1
你能否提供一下 results 的样例? - Wondercricket
@Wondercricket 完成。 - qwerty
@qwerty,我认为@Wondercricket指的是你代码中的“results”变量,而不是你代码所期望的结果。 - schneebuzz
这只是一个列表中的列表。因此,实际上“row”是一个列表,我正在从中将abc、qwe、asd输入到字典中。 - qwerty
1个回答

2

我想你试图创建一个嵌套的字典。如果我正确理解你的输入,你的代码可以通过将 report_dict[row[0]] 设置为空字典来修复。

report_dict[row[0]] = row[3]

to

report_dict[row[0]] = {}

这会使下一行,
report_dict[row[0]][row[3]] = row[1]

将键 row[3] 和值 row[1] 添加到字典 report_dict[row[0]] 中。这会给我们带来:

report_dict = {row[0]: {row[3]: row[1]}, ...}

我认为这是您期望的输出结果。

在for循环中,report_dict[row[0]] = {}这行代码会不会因为第一个键相同而导致数据被覆盖?请检查预期结果。 - qwerty
@qwerty 是的,在字典中不能有重复的键。请在新问题中询问您的新要求,而不是编辑此已回答的问题! - CDJB
好的,对于重复的键,您会怎么做?将其附加到另一个字典中吗? - qwerty
@qwerty 取决于你想要什么样的数据结构? - CDJB
最后应该是一个字典。 - qwerty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接