Python中循环后使用list.append()数据被覆盖问题的解决


Posted in Python onJuly 01, 2018

前言

最近发现一个问题,在一次爬虫实战中,需要将字典加入列表中,意外的情况出现了!!!下面简单分析一下出现的状况:

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,分配不同的地址。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python编程实现双链表,栈,队列及二叉树的方法示例
Nov 01 Python
Python Logging 日志记录入门学习
Jun 02 Python
python3中函数参数的四种简单用法
Jul 09 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
Python3模拟curl发送post请求操作示例
May 03 Python
Pandas之Dropna滤除缺失数据的实现方法
Jun 25 Python
如何使用django的MTV开发模式返回一个网页
Jul 22 Python
pyecharts动态轨迹图的实现示例
Apr 17 Python
python中matplotlib实现随鼠标滑动自动标注代码
Apr 23 Python
python 爬取B站原视频的实例代码
Sep 09 Python
Python图像处理之膨胀与腐蚀的操作
Feb 07 Python
Django 连接sql server数据库的方法
Jun 30 #Python
python绘制直线的方法
Jun 30 #Python
Python Grid使用和布局详解
Jun 30 #Python
Python 删除连续出现的指定字符的实例
Jun 29 #Python
使用python语言,比较两个字符串是否相同的实例
Jun 29 #Python
python去除文件中重复的行实例
Jun 29 #Python
python获取指定字符串中重复模式最高的字符串方法
Jun 29 #Python
You might like
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
两个开源的Php输出Excel文件类
2010/02/08 PHP
简单谈谈php中ob_flush和flush的区别
2014/11/27 PHP
ThinkPHP 404页面的设置方法
2015/01/14 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
vue实现井字棋游戏
2020/09/29 Javascript
Python常用模块用法分析
2014/09/08 Python
python中threading超线程用法实例分析
2015/05/16 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
对python 自定义协议的方法详解
2019/02/13 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
详解用python生成随机数的几种方法
2019/08/04 Python
开会迟到检讨书范文
2015/05/06 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
个人落户申请书怎么写?
2019/06/28 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS