簡體   English   中英

Python更改字典中的值,該字典是列表中的項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM