logo资料库

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

第1页 / 共1页
资料共1页,全文预览结束
中循环后使用list.append()数据被覆盖问题的解决 数据被覆盖问题的解决 Python中循环后使用 主要给大家介绍了关于Python中循环后使用list.append()数据被覆盖问题的解决方法,文中通过示例代码介绍的 非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 前言前言 最近发现一个问题,在一次爬虫实战中,需要将字典加入列表中,意外的情况出现了!!!下面简单分析一下出现的状况: 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,分配不同的地址。 总结总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言 交流,谢谢大家对我们的支持。
分享到:
收藏