python: Appending a dictionary to a list - I see a pointer like behavior
我在python解释器中尝试了以下方法:
1 2 3 4 5 6 7 8 9 10 | >>> >>> a = [] >>> b = {1:'one'} >>> a.append(b) >>> a [{1: 'one'}] >>> b[1] = 'ONE' >>> a [{1: 'ONE'}] >>> |
在这里,在将字典"b"添加到列表"a"之后,我将更改字典"a"中键1对应的值。不知何故,这一变化也反映在名单上。当我在列表中附加字典时,我不仅仅是在附加字典的值吗?看起来好像我在列表中附加了一个指向字典的指针,因此对字典的更改也会反映在列表中。
我不希望更改反映在列表中。我该怎么做?
谢谢你抽出时间来!
您的列表中包含对原始词典的引用,这是正确的。
记住,这是一个肤浅的复制品。另一种选择是使用
还有口述
1 2 3 4 5 6 7 | a = [] b = {1:'one'} a.append(dict(b)) print a b[1]='iuqsdgf' print a |
结果
1 2 | [{1: 'one'}] [{1: 'one'}] |
号
使用副本和深度副本
http://docs.python.org/library/copy.html
号