【问题标题】:Adding items to a nested dictionary将项目添加到嵌套字典
【发布时间】:2020-05-29 07:48:59
【问题描述】:

我正在尝试读取列表中的列表并将键和值添加到字典中的字典。但我得到“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}, …..}

【问题讨论】:

  • 你能发一个results的样张吗?
  • @Wondercricket 完成。
  • @qwerty 我认为@Wondercricket 是指代码中的results 变量,而不是代码的预期结果。
  • 它只是一个列表中的一个列表。所以基本上row 是一个列表,我从中输入 abc、qwe、asd 到字典中

标签: python python-3.x list dictionary for-loop


【解决方案1】:

我认为您要做的是制作一个嵌套字典。如果我正确理解您的输入,您的代码可以通过将 report_dict[row[0]] 设置为空字典来修复,方法是更改​​

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

report_dict[row[0]] = {}

这将使下一行,

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

将值为row[1] 的键row[3] 添加到字典report_dict[row[0]]。这会给我们:

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

我认为这是您的预期输出。

【讨论】:

  • report_dict[row[0]] = {} 在for循环中,如果第一个键相同,会不会导致数据被覆盖?检查预期结果。
  • @qwerty 是的,字典中不能有重复的键。请在新问题中提出您的新要求,而不是编辑已回答的问题!
  • 好的,你会怎么处理重复的键,把它附加到另一个字典?
  • @qwerty 取决于您想要的数据结构是什么?
  • 它应该是一本字典。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-22
相关资源
最近更新 更多