【发布时间】:2011-07-11 19:35:39
【问题描述】:
我在 python 解释器中尝试了以下操作:
>>>
>>> a = []
>>> b = {1:'one'}
>>> a.append(b)
>>> a
[{1: 'one'}]
>>> b[1] = 'ONE'
>>> a
[{1: 'ONE'}]
>>>
在这里,在将字典“b”附加到列表“a”之后,我正在更改与字典“a”中的键 1 对应的值。不知何故,这种变化也反映在列表中。当我将字典附加到列表时,我不只是附加字典的值吗?看起来好像我已将指向字典的指针附加到列表中,因此对字典的更改也反映在列表中。
我不希望更改反映在列表中。我该怎么做?
感谢您的宝贵时间!
【问题讨论】:
-
Chekhov 这不是 dictionary 'b' ,它是 dictionary b 或 dictionary of name 'b' 。顺便说一句,您写错了:“我正在更改字典 'a' 中键 1 对应的值” 不,在字典 b 中。关于您的惊讶:列表不包含值,它包含对象,因为在 Python 中一切都是对象。或者更准确地说,一个列表包含对对象的引用。
-
Chekhov 你也应该看到这个问题:(stackoverflow.com/questions/5242933/…)
-
@eyquem 感谢您的评论。我急着发这个。我很抱歉。
-
契诃夫 这不是责备,只是信息。顺便说一句,如果我的回答有点用,可以点赞。另外,您可以选择“接受”其中一个答案,通过点击一个答案左侧积分计数器下方的人字形条纹,它将获得25分。或者您可以选择不接受任何问题。
标签: python list dictionary