[英]Python change a value in a dictionary that is a item in a list
在此先感謝我想要更改列表中的項目的值
Python 2.6
goods1 = {'coal': 1, 'boxes': 2}
newcastlegoods = goods1
wylamgoods = goods1
goods1 = {}
Newcastle = ['Newcastle' , newcastlegoods]
Wylam = ['Wylam' , wylamgoods]
print Newcastle
print Wylam
Newcastle[1]['coal'] = 4;
print Newcastle
print Wylam
我的結果是
['Newcastle', {'coal': 1, 'boxes': 2}]
['Wylam', {'coal': 1, 'boxes': 2}]
['Newcastle', {'coal': 4, 'boxes': 2}]
['Wylam', {'coal': 4, 'boxes': 2}]
請注意,兩個煤炭項目都已更新,我只想更新紐卡斯爾。
確保您的列表包含原始字典的副本 ,而不是對其的引用。
goods1 = {'coal': 1, 'boxes': 2}
Newcastle = ['Newcastle' , dict(goods1)]
Wylam = ['Wylam' , dict(goods1)]
print Newcastle
print Wylam
Newcastle[1]['coal'] = 4;
print Newcastle
print Wylam
您正在向兩個列表添加相同的字典。 當你改變一個時,它就像改變另一個一樣。
在這種情況下,您可以通過使用來解決它
newcastlegoods = goods1.copy()
wylamgoods = goods1.copy()
這將為每個人創建一個新的字典。
在這種情況下這很好。 如果在字典中放置可變對象,則需要查看深層副本,否則將在新字典中引用相同的對象。
最好的方法是使用名為copy的包。 如果你在這本詞典中有實例,唯一能幫到你的是copy.deepcopy方法。 請參見https://docs.python.org/2/library/copy.html
謝謝大家快速回復所有答案都有效!!!!! 我沒想到貨物1不是一個獨立的副本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.