|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 苏丛 于 2018-2-18 18:52 编辑
- 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都是不同的),具体你可以百度一下什么叫浅拷贝和深拷贝
|
|