Python中循环后使用list.append()数据被覆盖问题的解决
作者:iqunqunqun 时间:2023-02-08 20:45:49
前言
最近发现一个问题,在一次爬虫实战中,需要将字典加入列表中,意外的情况出现了!!!下面简单分析一下出现的状况:
list = []
dic = {}
for i in range(5):
dic['num'] = i
list.append(dic)
print(id(dic))
print(list)
136652096
136652096
136652096
136652096
136652096
[{'num': 4}, {'num': 4}, {'num': 4}, {'num': 4}, {'num': 4}]
结果出乎意料,并不是我们简单认为的
[{'num': 0}, {'num': 1}, {'num': 2}, {'num': 3}, {'num': 4}]
用我自己的理解是:
如上图,每一个dic都给list一个位置,但你的dic在循环外,也就说每次循环你给的都是一个地址,dic的值改变,新一次的循环值就会覆盖上一次循环的值,list取到的值也改变。
正确做法:
list = []
for i in range(5):
dic = {}
dic['num'] = i
list.append(dic)
print(id(dic))
print(list)
138383888
136652192
138383408
138384272
138383792
[{'num': 0}, {'num': 1}, {'num': 2}, {'num': 3}, {'num': 4}]
正确做法是将dic放入循环内,这样每次循环都会是一个新的dic,分配不同的地址。
来源:http://www.cnblogs.com/iqunqunqun/p/9249888.html
标签:python,循环,list.append()
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python表达式的优先级详解
2021-09-21 14:24:59
python显示天气预报
2022-04-22 23:46:38
python支持多继承吗
2023-10-14 11:22:48
10 分钟快速入门 Python3的教程
2022-01-17 21:14:04
python仿抖音表白神器
2023-03-15 03:35:56
![](https://img.aspxhome.com/file/2023/4/107284_0s.jpg)
一份ASP内存的释放的实验报告
2007-10-17 13:09:00
![](https://img.aspxhome.com/file/UploadPic/200710/17/2007101713177321s.gif)
PHP实现对图片的反色处理功能【测试可用】
2023-11-03 19:41:28
![](https://img.aspxhome.com/file/2023/7/55627_0s.jpg)
wiondws XP下安装MySQL图文教程
2007-06-15 09:29:00
![](https://img.aspxhome.com/file/uploadpic/20076/15/2007615151328962.gif)
python中实现数组和列表读取一列的方法
2021-04-07 08:04:48
python操作ini类型配置文件的实例教程
2021-05-12 13:11:23
![](https://img.aspxhome.com/file/2023/4/115794_0s.png)
CSS的未来:一些试验性CSS属性
2011-06-10 13:20:00
.NET多种数据库大数据批量插入、更新(支持SqlServer、MySql、PgSql和Oracle)
2024-01-19 07:39:40
![](https://img.aspxhome.com/file/2023/6/75546_0s.jpg)
交互设计的方法
2010-08-18 12:32:00
![](https://img.aspxhome.com/file/UploadPic/20108/18/01-52s.jpg)
PHP session会话的安全性分析
2023-11-21 23:47:59
![](https://img.aspxhome.com/file/2023/5/98075_0s.gif)
MySQL 中行转列的方法
2024-01-25 23:55:59
在ASP.NET 2.0中操作数据之五十六:使用ObjectDataSource缓存数据
2024-05-11 09:26:18
![](https://img.aspxhome.com/file/2023/5/126205_0s.png)
python 实现数字字符串左侧补零的方法
2021-07-07 10:34:43
MySQL数据库可以用任意ip连接访问的方法
2024-01-19 21:00:02
![](https://img.aspxhome.com/file/2023/0/79150_0s.png)
Win10环境python3.7安装dlib模块趟过的坑
2021-03-25 14:09:25
![](https://img.aspxhome.com/file/2023/3/131103_0s.jpg)
MySQL SQL 语法参考
2024-01-17 15:50:05