|  | 
 
| 
本帖最后由 苏丛 于 2018-2-18 18:52 编辑
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 复制代码a = {}
a = a.fromkeys(range(5), [0,0])
我想让第0个发生改变,于是运行:
 可实际情况是:
 复制代码{0: [1, 0], 1: [1, 0], 2: [1, 0], 3: [1, 0], 4: [1, 0]}
每个都变了
 
 而运行:
 却能做到只有一个改变
 
 请问:
 如何解释这种情况
 还有如果要把字典变成{0: [1, 0], 1: [0, 0], 2: [0, 0], 3: [0, 0], 4: [0, 0]}要如何操作
 
 谢谢
 
这是因为你在使用fromkeys后生成的value在地址中指向是相同的,所以才会改变一个,所有的value都会改变,你可以尝试自己创建一个和生产后内容一样的字典试试(你可以用dict.values()取出值,然后id(value),看看他分配的地址,fromkeys生成的id是相同的,而你自己创建的每个value的id都是不同的),具体你可以百度一下什么叫浅拷贝和深拷贝 | 
 |