Python中循環(huán)后使用list.append()數(shù)據(jù)被覆蓋問題的解決
前言
最近發(fā)現(xiàn)一個(gè)問題,在一次爬蟲實(shí)戰(zhàn)中,需要將字典加入列表中,意外的情況出現(xiàn)了!??!下面簡(jiǎn)單分析一下出現(xiàn)的狀況:
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}]
結(jié)果出乎意料,并不是我們簡(jiǎn)單認(rèn)為的
[{'num': 0}, {'num': 1}, {'num': 2}, {'num': 3}, {'num': 4}]
用我自己的理解是:
如上圖,每一個(gè)dic都給list一個(gè)位置,但你的dic在循環(huán)外,也就說(shuō)每次循環(huán)你給的都是一個(gè)地址,dic的值改變,新一次的循環(huán)值就會(huì)覆蓋上一次循環(huán)的值,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放入循環(huán)內(nèi),這樣每次循環(huán)都會(huì)是一個(gè)新的dic,分配不同的地址。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Python數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表詳解
- Python 循環(huán)讀取數(shù)據(jù)內(nèi)存不足的解決方案
- python 使用xlsxwriter循環(huán)向excel中插入數(shù)據(jù)和圖片的操作
- Python 使用xlwt模塊將多行多列數(shù)據(jù)循環(huán)寫入excel文檔的操作
- Python matplotlib讀取excel數(shù)據(jù)并用for循環(huán)畫多個(gè)子圖subplot操作
- python 循環(huán)數(shù)據(jù)賦值實(shí)例
- Python中l(wèi)ist循環(huán)遍歷刪除數(shù)據(jù)的正確方法
- python循環(huán)某一特定列的所有行數(shù)據(jù)(方法示例)
相關(guān)文章
python使用 cx_Oracle 模塊進(jìn)行查詢操作示例
這篇文章主要介紹了python使用 cx_Oracle 模塊進(jìn)行查詢操作,結(jié)合實(shí)例形式分析了Python使用cx_Oracle模塊進(jìn)行數(shù)據(jù)庫(kù)的基本連接、查詢、輸出等相關(guān)操作技巧,需要的朋友可以參考下2019-11-11
Python?SQLAlchemy之SQL工具包和ORM的用法詳解
SQLAlchemy?是?Python?中一款非常流行的數(shù)據(jù)庫(kù)工具包,它對(duì)底層的數(shù)據(jù)庫(kù)操作提供了高層次的抽象,在本篇文章中,我們將介紹SQLAlchemy的兩個(gè)主要組成部分:SQL工具包和對(duì)象關(guān)系映射器的基本使用,需要的朋友可以參考下2023-08-08
利用python numpy+matplotlib繪制股票k線圖的方法
這篇文章主要介紹了利用python numpy+matplotlib繪制股票k線圖的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Pyqt+matplotlib 實(shí)現(xiàn)實(shí)時(shí)畫圖案例
這篇文章主要介紹了Pyqt+matplotlib 實(shí)現(xiàn)實(shí)時(shí)畫圖案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
python內(nèi)存占用過(guò)多問題以及其解決方案
Python是一種高級(jí)編程語(yǔ)言,被廣泛應(yīng)用于各種領(lǐng)域,包括網(wǎng)站開發(fā)、數(shù)據(jù)分析、人工智能等,這篇文章主要給大家介紹了關(guān)于python內(nèi)存占用過(guò)多問題以及其解決方案的相關(guān)資料,需要的朋友可以參考下2024-08-08
python logging通過(guò)json文件配置的步驟
這篇文章主要介紹了python logging通過(guò)json文件配置的步驟,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
python項(xiàng)目中requirements.txt的用法實(shí)例教程
Python項(xiàng)目中必須包含一個(gè)requirements.txt文件,用于記錄所有依賴包及其精確的版本號(hào),以便新環(huán)境部署,下面這篇文章主要給大家介紹了關(guān)于python項(xiàng)目中requirements.txt用法的相關(guān)資料,需要的朋友可以參考下2022-06-06

