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 相关文章推荐
Flask SQLAlchemy一对一,一对多的使用方法实践
Feb 10 Python
Python压缩和解压缩zip文件
Feb 14 Python
编写Python小程序来统计测试脚本的关键字
Mar 12 Python
python3 与python2 异常处理的区别与联系
Jun 19 Python
python+tkinter编写电脑桌面放大镜程序实例代码
Jan 16 Python
Python面向对象类继承和组合实例分析
May 28 Python
Python使用googletrans报错的解决方法
Sep 25 Python
python实现随机漫步方法和原理
Jun 10 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
python字典排序的方法
Oct 12 Python
Python使用Excel将数据写入多个sheet
May 16 Python
Python中常用的os操作汇总
Nov 05 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
phpmail类发送邮件函数代码
2012/02/20 PHP
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
用Python编写简单的微博爬虫
2016/03/04 Python
Python实现k-means算法
2018/02/23 Python
Python中的取模运算方法
2018/11/10 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
python实现简单颜色识别程序
2020/02/19 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
美国婚礼装饰和活动用品批发供应商:Event Decor Direct
2018/10/12 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
学校安全管理责任书
2014/07/23 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏