浅谈python中字典append 到list 后值的改变问题
作者:katios 时间:2021-09-17 23:13:23
看一个例子
d={'test':1}
d_test=d
d_test['test']=2
print d
如果你在命令行实践的话,会发现你改动的是d_test ,但是d 也跟着改变了。
通常这和我们期待的不一样。
Why?
因为字典d 是一个object ,而d_test=d并没有真正的将该字典在内存中再次创建。只是指向了相同的object。这也是python 提高性能,优化内存的考虑。
实际场景
d={"name":""}
l=[]
for i in xrange(5):
d["name"]=i
l.append(d)
print l
loop 后可能跟你想要的结果并不相同。
即使append到list 中,但是,list中存放的也是一个对象,或者说是字典的地址。而非内存中真正的存储空间。
使用 .copy()方法。可以创建一个新的独立的字典
d={"name":""}
l=[]
for i in xrange(5):
test=d.copy()
test["name"]=i
l.append(test)
print l
更新:
a={'q':1,'w':[]}
b=a.copy()
b['q']=2
b['w'].append(123)
print a
print b
这个时候发现a中'q'的值不会变化但是其列表中的值还是发生了改变
因为copy是浅层次copy
但是这里有个track
a={'q':1,'w':[]}
b=a.copy()
b['q']=2
b['w']=[123]
print a
print b
直接赋值的话,则不会改变a中的结构(多半是append这个方法的关系)
深层次的copy
import copy
a={'q':1,'w':[]}
b=copy.deepcopy(a)
来源:https://blog.csdn.net/sinat_21302587/article/details/72356431
标签:python,list,append
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
SQL查询不重复记录/删除重复记录
2008-11-18 16:08:00
在python中list作函数形参,防止被实参修改的实现方法
2022-11-15 19:27:25
![](https://img.aspxhome.com/file/2023/7/87777_0s.jpg)
MySQL数据库之UPDATE更新语句精解
2009-03-20 15:21:00
计划备份mysql数据库
2009-03-09 14:34:00
ie和firefox中css自动换行实现方法
2008-04-08 12:49:00
python实现简单的计算器功能
2021-02-08 03:38:54
![](https://img.aspxhome.com/file/2023/5/77605_0s.jpg)
详解字典树Trie结构及其Python代码实现
2023-07-07 18:18:41
SQL Server连接中经常出现的3个常见错误与解答
2010-07-26 14:25:00
Oracle批量查询、删除、更新使用BULK COLLECT提高效率
2023-07-14 03:15:52
SQL语言基本语句介绍
2008-07-24 13:32:00
Python连接es之es更新操作示例详解
2022-11-21 06:11:48
ASP在线升级类文件源码
2008-10-10 13:09:00
Windows8下安装Python的BeautifulSoup
2022-05-30 15:03:06
用Python制作检测Linux运行信息的工具的教程
2022-03-01 17:49:15
Python的Bottle框架中返回静态文件和JSON对象的方法
2023-11-07 20:14:41
![](https://img.aspxhome.com/file/2023/4/66374_0s.png)
Python常用内置函数的使用教程详解
2021-11-11 21:23:50
python XlsxWriter模块创建aexcel表格的实例讲解
2023-08-30 02:20:47
![](https://img.aspxhome.com/file/2023/3/65093_0s.jpg)
详解Python连接oracle的问题记录与解决
2021-04-07 09:38:41
![](https://img.aspxhome.com/file/2023/5/86235_0s.png)
再谈动态添加样式规则
2009-09-02 13:10:00
Python使用plotly绘制数据图表的方法
2023-04-25 13:19:00
![](https://img.aspxhome.com/file/2023/1/82721_0s.png)