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 相关文章推荐
django 自定义用户user模型的三种方法
Nov 18 Python
Django中URL视图函数的一些高级概念介绍
Jul 20 Python
Python使用dis模块把Python反编译为字节码的用法详解
Jun 14 Python
Python入门_浅谈for循环、while循环
May 16 Python
利用python实现xml与数据库读取转换的方法
Jun 17 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
python保存字典和读取字典的实例代码
Jul 07 Python
python 实现将list转成字符串,中间用空格隔开
Dec 25 Python
python基于property()函数定义属性
Jan 22 Python
解决Keras中CNN输入维度报错问题
Jun 29 Python
python 使用elasticsearch 实现翻页的三种方式
Jul 31 Python
详解python爬取弹幕与数据分析
Nov 14 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
理解和运用PHP中的多态性[译]
2011/08/02 PHP
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
实现php删除链表中重复的结点
2018/09/27 PHP
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
最简单的js图片切换效果实现代码
2011/09/24 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
javascript中 try catch用法
2015/08/16 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
2016/10/10 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
java直接调用python脚本的例子
2014/02/16 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
python实现解数独程序代码
2017/04/12 Python
Python中的defaultdict与__missing__()使用介绍
2018/02/03 Python
python实现事件驱动
2018/11/21 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
django中嵌套的try-except实例
2020/05/21 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
优秀教师先进事迹
2014/01/22 职场文书
2014法制宣传日活动总结
2014/07/09 职场文书
2015年度党风廉政建设工作情况汇报
2015/01/02 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
财务工作失误检讨书
2015/02/19 职场文书
元旦晚会开场白
2015/05/29 职场文书
《妈妈别哭,有我在》读后感3篇
2020/01/13 职场文书