太阳花田 发表于 2017-4-18 16:23:23

关于Python字典的一些疑惑!



在创建dic和dic2时 键1和1.0都只取了一个且都是写在前面的,而value都是取得后面的这是Python的规定吗?
看小甲鱼的扩展 相同的键的哈希函数求得的应该是一样的dic和dic2的地址和数据都是一样的,而dic1则不同,为什么?
难道创建一个字典取key值还要判断其他字典是否取了这个值了吗?如果不是,那是不是每个字典都要自己的哈希函数 ,
要不然算出来的地址一样,一改不全变了?

lumber2388779 发表于 2017-4-18 17:55:46

因为你的key值实际都是1,后边的会覆盖前边的值,所以都取后边的,你可以用len函数看下,实际dic与dic1都只有2个元素
dic和dic2因为key和value都是一致的,为了节省内存,所以将其分配到同一块地址上,dic1值不一样那肯定不用同一块内存
而当你修改了一个key的value之后,将会自动在内存中重新创建一份控件存储改变的key和value并不会改变到原本的
比如你的程序 id(dic)与id(dic)都是30389840
当你修改了dic的值之后,id(dic)会是新的值,而id(dic)还是30389840

太阳花田 发表于 2017-4-18 21:56:43

lumber2388779 发表于 2017-4-18 17:55
因为你的key值实际都是1,后边的会覆盖前边的值,所以都取后边的,你可以用len函数看下,实际dic与dic1都只 ...

谢谢!看了之后明白多了。
页: [1]
查看完整版本: 关于Python字典的一些疑惑!