在下面的獨立代碼片段中,我試圖得到這個結果: lista_skafwn_to_insert: [{'SERVICE REPORTS': ['1']}, {'SERVICE REPORTS': ['2']}],
但我得到了這個:lista_skafwn_to_insert: [{'SERVICE REPORTS': ['2']}, {'SERVICE REPORTS': ['2']}]。
為什么第一個字典的值被改變并等于最后一個字典的值?
當sr_ged為 1 時,我將其附加到串列中。然后sxima_skafous字典將此串列用作“SERVICE REPORTS”鍵中的值。
然后我將這個字典附加到lista_skafwn_to_insert串列中。
所以lista_skafwn_to_insert的第一個元素是這個{'SERVICE REPORTS': ['1']}。
然后我清除lista_service_reports并在sr_ged上分配一個新值,然后重復上述程序。
為什么在sr_ged和lista_sesrvice_reports發生任何更改之前附加第一個字典的值會受到影響?
代碼片段:
lista_skafwn_to_insert = []
lista_service_reports = []
sr_ged = input("sr_ged: ")
lista_service_reports.append(sr_ged)
sxima_skafous = {"SERVICE REPORTS": lista_service_reports}
lista_skafwn_to_insert.append(sxima_skafous)
print('lista_skafwn_to_insert:' str(lista_skafwn_to_insert))
lista_service_reports.clear()
sr_ged = input("sr_ged: ")
lista_service_reports.append(sr_ged)
sxima_skafous = {"SERVICE REPORTS": lista_service_reports}
lista_skafwn_to_insert.append(sxima_skafous)
print('lista_skafwn_to_insert: ' str(lista_skafwn_to_insert))
uj5u.com熱心網友回復:
嘗試像這樣使用 .copy() 。串列是一個指標,所以……這就是重點!
lista_skafwn_to_insert = []
lista_service_reports = []
sr_ged = input("sr_ged: ")
lista_service_reports.append(sr_ged)
sxima_skafous = {"SERVICE REPORTS": lista_service_reports.copy()}
lista_skafwn_to_insert.append(sxima_skafous)
print('lista_skafwn_to_insert:' str(lista_skafwn_to_insert))
lista_service_reports.clear()
sr_ged = input("sr_ged: ")
lista_service_reports.append(sr_ged)
sxima_skafous = {"SERVICE REPORTS": lista_service_reports.copy()}
lista_skafwn_to_insert.append(sxima_skafous)
print('lista_skafwn_to_insert: ' str(lista_skafwn_to_insert))
uj5u.com熱心網友回復:
兩本詞典都參考了同一個串列。該clear方法只改變原始串列。它不會創建一個新的。將clear呼叫更改為:
lista_service_reports = []
這將啟動一個全新的串列以存盤在第二個字典中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/392960.html
