本文摘自php中文网,作者不言,侵删。
这篇文章主要介绍了关于浅谈python中字典append 到list 后值的改变,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下看一个例子
1 2 3 4 |
|
如果你在命令行实践的话,会发现你改动的是d_test ,但是d 也跟着改变了。
通常这和我们期待的不一样。
Why?
因为字典d 是一个object ,而d_test=d并没有真正的将该字典在内存中再次创建。只是指向了相同的object。这也是python 提高性能,优化内存的考虑。
实际场景
1 2 3 4 5 6 |
|
loop 后可能跟你想要的结果并不相同。
即使append到list 中,但是,list中存放的也是一个对象,或者说是字典的地址。而非内存中真正的存储空间。
使用 .copy()方法。可以创建一个新的独立的字典
1 2 3 4 5 6 7 |
|
更新:
1 2 3 4 5 6 |
|
这个时候发现a中'q'的值不会变化但是其列表中的值还是发生了改变
因为copy是浅层次copy
但是这里有个track
1 2 3 4 5 6 |
|
直接赋值的话,则不会改变a中的结构(多半是append这个方法的关系)
深层次的copy
1 2 3 |
|
相关推荐:
Python 创建空的list,以及append用法讲解
以上就是浅谈python中字典append 到list 后值的改变的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
更多相关阅读请进入《Python》频道 >>

Python编程 从入门到实践 第2版
python入门书籍,非常畅销,超高好评,python官方公认好书。