鱼C论坛

 找回密码
 立即注册
查看: 737|回复: 3

[已解决]求大神棒棒小白 为什么答案不是6呢

[复制链接]
发表于 2020-5-13 17:37:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
dict={'1':1,'2':2}
theCopy=dict
dict['1']=5
sum=dict['1']+theCopy['1']
print(sum)
最佳答案
2020-5-13 17:41:11
本帖最后由 liuzhengyuan 于 2020-5-13 17:43 编辑

字典跟列表一样的
dict 改变了
theCopy 也会变
因为 theCopy 获取了 dict 的地址

如果你想让它输出 6 那就得加一个 .copy()
  1. dict={'1':1,'2':2}
  2. theCopy=dict.copy()
  3. dict['1']=5
  4. sum=dict['1']+theCopy['1']
  5. print(sum)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-13 17:41:11 | 显示全部楼层    本楼为最佳答案   
本帖最后由 liuzhengyuan 于 2020-5-13 17:43 编辑

字典跟列表一样的
dict 改变了
theCopy 也会变
因为 theCopy 获取了 dict 的地址

如果你想让它输出 6 那就得加一个 .copy()
  1. dict={'1':1,'2':2}
  2. theCopy=dict.copy()
  3. dict['1']=5
  4. sum=dict['1']+theCopy['1']
  5. print(sum)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 17:42:25 | 显示全部楼层
本帖最后由 sunrise085 于 2020-5-13 17:44 编辑

你这只是贴标签。dict和theCopy指向同一单元
若想得到6
那应该将第二行修改一下,改为拷贝
theCopy=dict.copy()

看看这个帖子:python细节之2、变量名与标签 变量的赋值与修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 17:53:24 | 显示全部楼层
本帖最后由 773254968 于 2020-5-13 17:59 编辑
  1. dict={'1':1,'2':2}  #定义字典
  2. theCopy=dict        #这一句的意思是,theCopy和dict代表的同一个东西,
  3.                     #也就是修改theCopy,dict对象也会跟着一起修改
  4. print('theCopy ID=%', id(theCopy))
  5. print('dict ID=%', id(dict))#这里证明theCopy和dict是一个东西。
  6.                         #小结:因为字典是可变对象,也就是和list对象一样,
  7.                         #赋值给另一个变量不是创建新的对象然后赋值过去
  8.                         #theCopy=dict.copy()这样写的话就会创建新的字典对象,他们的id就不是同一个值
  9. dict['1']=5         #所以这里把数据修改成了{'1':5,'2':2}
  10. sum=dict['1']+theCopy['1']#因为都是同一个东西,所以dict['1']是5,theCopy['1']也是5,相加就是10
  11. print(sum)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 17:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表