052作业第14题,copy的字典如何被替换了?
list1 =list2 =
dict1 = {'1':list1, '2':list2}
dict2 = dict1.copy()
dict1['1'] = 5
result = dict1['1'] + dict2['1']
print(result)
答案是 10
没看明白原因。
>>> dict1 = {1:2,3:4}
>>> dict2 = {5:6,7:8}
>>> dict1
{1: 2, 3: 4}
>>> dict2
{5: 6, 7: 8}
>>> dict3 = dict2
>>> dict4 = dict2.copy()
>>> dict3
{5: 6, 7: 8}
>>> dict4
{5: 6, 7: 8}
>>> dict2 = 60
>>> dict2
{5: 60, 7: 8}
>>> dict3
{5: 60, 7: 8}
>>> dict4
{5: 6, 7: 8}py()
上面这个例子和题目有设么区别呢? type(dict1['1'] )
type(dict2 )
比较一下异同~ list1 =
list2 =
dict1 = {'1':list1, '2':list2}
dict2 = dict1.copy()
dict1['1'] = 5
result = dict1['1'] + dict2['1']
print(result)
因为dict1['1']表示字典dict1里面key值为‘1’的值,即list1,而dict1['1']就表示list1的第0个元素,即1.当dict1['1'] = 5表示将列表list1中的1更新为5(list1=).dict2是复制的dict1,所以dict2['1']=5,故result=5+5=10(不知道这么理解对不?) 本帖最后由 玄天宗 于 2016-8-16 11:23 编辑
>>> dict1 = {1:2,3:4}
>>> dict2 = {5:6,7:8}
>>> dict1
{1: 2, 3: 4}
>>> dict2
{5: 6, 7: 8}
>>> dict3 = dict2
>>> dict4 = dict2.copy()
>>> dict3
{5: 6, 7: 8}
>>> dict4
{5: 6, 7: 8}
>>> dict2 = 60
>>> dict2
{5: 60, 7: 8}
>>> dict3
{5: 60, 7: 8}
>>> dict4
{5: 6, 7: 8}py()
这个问题你要是看了视频因该就明白了、、、(用小甲鱼视频里说的python里面没有变量只有标签,不知道是不是这么说的{:10_250:})
dict2和dict3是将dict2、dict3这两个变量名指向同一字典,而dict4是复制dict2(因该是在内存中重新存了一个字典)所以当dict2=60时dict2和dict3的值都发生改变而dict4没有变
(可惜不知道怎么上图片)
===两个的区别因该是第一个copy的是一个变量(两个list的值)而第二个copy的就是值
(相互学习,不知道我理解对不??) 玄天宗 发表于 2016-8-16 11:13
>>> dict1 = {1:2,3:4}
>>> dict2 = {5:6,7:8}
>>> dict1
同样都是copy() 操作
为什么第一个例子中 dict2 随着 dict1 改变了
第二个例子中 dict4 没有随着 dict2 改变呢? ssg2006 发表于 2016-8-16 13:19
同样都是copy() 操作
为什么第一个例子中 dict2 随着 dict1 改变了
第一个列子你用dict1.setdefault('b',2)这个试试,可以在dict1中加入一个值,dict1={'2': , '1': , 'b': 2}
你再看dict2的值并没有变、、、、、你对比一下他们有什么不同,因该能明白了、、、 >>> list1 =
>>> list2 =
>>> dict1 = {'1':list1, '2':list2}
>>> dict2 = dict1.copy()
>>> dict1
{'2': , '1': }
>>> dict2
{'2': , '1': }
>>> dict1.setdefault('b',2)
2
>>> dict1
{'2': , '1': , 'b': 2}
>>> dict2
{'2': , '1': }
>>> dict1['1'] = 5
>>> dict1
{'2': , '1': , 'b': 2}
>>> dict2
{'2': , '1': }
>>> list1
>>> list2
>>> dict1['1']
不知何时直接把 list1 改写了,用 dict1['1'] 可以做到的样子。 ssg2006 发表于 2016-8-16 14:50
不知何时直接把 list1 改写了,用 dict1['1'] 可以做到的样子。
就是这个dict1['1'] = 5 将list1的第一项改成了5(dict1['1'] 分解开就是dict1中key值为‘1’的项,即list1而表示list1的第一项,本来是1,通过dict1['1'] = 5就变成5了)
我也是才自学了一部分估计讲得不清楚、、、、
dict1['1']
意思是指list1 =
dict1['1']=5
是指list1 = {:10_249:}{:10_249:}{:10_249:} 度娘和看视频都可以解决 最近刚学到这...
list1 =
list2 =
dict1 = {'1':list1, '2':list2}
dict2 = dict1.copy() #注意⚠这里虽然是浅拷贝,但是list1是变量,相当于x,变量发生变化,对应的dict1,2,3都会变
dict3=dict1
dict1['1'] = 5
print(dict1,dict2,dict3)
result = dict1['1'] + dict2['1']
print(result)
print('========================================================')
import copy
list1 =
list2 =
dict1 = {'1':list1, '2':list2}
dict2 = copy.deepcopy(dict1) #这里是深拷贝,相当于dict2={'1':[1,2, '2':[3,4},已经突破了变量的束缚(固定了)
dict1['1'] = 5
result = dict1['1'] + dict2['1']
print(result)
页:
[1]