从字典中获取值而不链接到内存位置

时间:2015-06-23 19:16:25

标签: python python-3.x dictionary

在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]

有没有办法解决这个问题,所以我可以将字典中的值分配给变量,而不需要像这样链接?

2 个答案:

答案 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]

请注意,这将复制清单。