你能解释一下下面的python(dict)代码是如何工作的吗?

时间:2017-11-30 19:28:10

标签: python dictionary data-structures

/ * sample2指的是样本,但是当我用{}更新样本时,sample2仍然有旧的键和值* /

sample={1:'one',2:'two',3:'three'}
sample2=sample   #reference
sample3=sample.copy()   #using copy method
sample
{1: 'one', 2: 'two', 3: 'three'}
sample2
{1: 'one', 2: 'two', 3: 'three'}
sample3
{1: 'one', 2: 'two', 3: 'three'}
sample.popitem()
(1, 'one')
sample
{2: 'two', 3: 'three'}
sample2
{2: 'two', 3: 'three'}
sample3
{1: 'one', 2: 'two', 3: 'three'}
sample={}
sample2
{2: 'two', 3: 'three'}

/ *为什么sample2仍然具有这些值,尽管它是样本的参考。

2 个答案:

答案 0 :(得分:1)

sample2 是对sample的引用!它是对同一个(内存中的字典数据结构)的引用,也是名称/引用sample

在Python中,名称无法引用其他名称。名称指的是值。 始终

sample={} 将名称sample重新分配到另一个值。 sample2并不关心这一点。

答案 1 :(得分:0)

sample2不是对sample的引用,而是对sample所具有的值的引用。当您执行sample = {}时,旧值仍然存在,sample2仍然引用它,但sample1现在引用了{}