【发布时间】:2016-02-26 19:29:14
【问题描述】:
我有一本格式如下的字典:
dictionary= {reference:annotation}
其中引用指的是一个位置,并且注释包含有关该位置的信息。
我想找到重叠的参考位置,并在发生这种情况时更新注释。我要更新的注释由dictionary["reference"].qualifiers["ID"] 访问(注释包含第二个字典,我可以在其中访问我想要的信息)。
如果我尝试使用以下方法向注释添加另一个 ID:d
dictionary[reference].qualifiers["ID"].extend(["new ID"])
或
dictionary[reference].qualifiers["ID"].append("new ID")
我的字典中的所有参考注释都将使用该新 ID 进行更新。 但是,如果使用基本列表理解来执行此操作,我会得到所需的结果:
dictionary[reference].qualifiers["ID"] = dictionary[reference].qualifiers["ID"] + ["new ID"]
仅更新该引用处的注释。谁能解释为什么我使用“追加”或“扩展”得到不同的结果?
【问题讨论】:
-
假设你打印一个字典["reference"].qualifiers["ID"]的值,你会得到什么?
-
我提供了一个答案,因为它很有可能会有所帮助,即使这个问题是有缺陷的。但是,这个问题不符合提问准则:stackoverflow.com/help/mcve ... 并且可能很快就会被关闭,除非你纠正它。
-
您发布的代码不是 MCVE。但是,您似乎认为注释掉的行与其上方的第二行相同。在您的问题中,“期望结果”代码实际上与“假定有问题”代码相同。在您的实际代码中,注释掉的是“分类”数组的第一个元素,而不是数组本身。这不一样。它也与您对问题的描述没有相似之处(“所有参考注释都已更新”),但至少看起来有差异......
-
抱歉,我回滚到您的旧问题并投票关闭它,因为此问题无法再重现。我这样做是因为您的示例和您的完整代码似乎是不同的问题。我的意思是你的例子有效,但你的代码应该是另一个问题。正如我所说,如果您的问题没有解决,您可以提出另一个问题,但请使用 MCVE,正如@GreenAsJade 所说(就像您的旧问题一样)。另外请记住下次不要在一个问题中问两个问题。 :)
-
所以记住我说的话,向minimal reproducible example提问:你的问题中包含的代码应该是Minimal(只有重现问题所必需的代码),完整(重现问题所需的所有代码)和可验证(我们应该能够仅使用您问题中的代码重现问题,仅此而已) . :D
标签: python list dictionary append extend