字典部分课后题求助
题目是这样的, 如果你需要将字典dict1 = {1: 'one', 2: 'two', 3: 'three'}拷贝到dict2,你应该怎么做?答:可以利用字典的copy()方法:dict2 = dict1.copy(),在其他语言转移到Python小伙伴们刚开始可能会习惯性的直接用赋值的方法(dict2 = dict1),这样子做在Python中只是将对象的引用拷贝过去而已。
看以下区别:
>>> a = {1:'one', 2:'two', 3:'three'}
>>> b = a.copy()
>>> c = a
>>> c = 'four'
>>> c
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
>>> a
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
>>> b
{1: 'one', 2: 'two', 3: 'three'}
我的问题是 c=a之后 , 添加了c='four' 那么 为什么再打 a 的时候,{1: 'one', 2: 'two', 3: 'three', 4: 'four'} 把 4: 'four'也会显示出来。
就像我回答这道题时, 我 用 dict2=dict1
然后 我 加了行 dict1.clear(), 结果 再去打dict2 发现也变空字典了, 这我就不明白 其中的关联关系了。 这就跟列表那个解释是一样的。你第二行的答案已经告诉你了,只是把对象的引用拷贝过去而已。
简单的打个比方,你的a和b变量只是相当于一个门牌号。
a门牌里面对应的是{1:'one', 2:'two', 3:'three'},这一个住户。
当你b=a的copy时候,你就又给这个住户帖了另外一个门牌,但是还是指向的这个用户。
同理,c也是指向的这个用户。
当你任意修改一个(a or b or c)值的时候,修改的是里面的用户,那自然所有指向这个用户的门牌号都跟着变了。
python里面所有的变量名都对应一组数据,所有的值也都对应一组基于变量名引用的数据。
当前有三个变量名都引用同一个地址,修改地址内容了,所有变量名对应的内容也就都发生了改变。
heidern0612 发表于 2020-10-30 07:51
这就跟列表那个解释是一样的。你第二行的答案已经告诉你了,只是把对象的引用拷贝过去而已。
简单的打个 ...
第12讲又温了一遍,贴标签, 跟分片拷贝区别, 直接上图 多谢
页:
[1]