在Python 3.4中,我尝试从字典中检索值,更改它并将其用于程序中的其他位置,但我发现字典表现出以下行为:
>>> D = {"A":[1,2,3]}
>>> C = D["A"]
>>> C.append(4)
>>> D["A"]
[1, 2, 3, 4]
>>> F = D.get("A")
>>> F.append(5)
>>> D["A"]
[1, 2, 3, 4, 5]
有没有办法解决这个问题,所以我可以将字典中的值分配给变量,而不需要像这样链接?
答案 0 :(得分:1)
字典不会将对象值保留为对象的引用。
您需要将列表的副本分配给另一个变量名称,您可以使用[:]
创建浅层副本:
>>> D = {"A":[1,2,3]}
>>> C = D["A"][:]
>>> C.append(4)
>>> D["A"]
[1, 2, 3]
或使用copy
模块:
>>> import copy
>>> C = copy.copy(D["A"])
>>> C.append(4)
>>> D["A"]
[1, 2, 3]
答案 1 :(得分:1)
一个非常简单的解决方案是使用[:]
在字典中复制列表,然后使用它。
示例 -
>>> D = {"A":[1,2,3]}
>>> C = D["A"][:]
>>> C.append(4)
>>> C
[1, 2, 3, 4]
>>> D["A"]
[1, 2, 3]
请注意,这将复制清单。