[英]Python: copying dictionary inside function modifies also original copy
我有一個計算一籃子物品稅的小腳本。 它的工作原理是創建一個具有正確值的新鍵“稅”。 由於我不想更改原始字典,因此我淺復制了輸入字典。 令我驚訝的是,這段代碼還更改了原始字典數據。 你能解釋一下為什么嗎?
data = {'book': {'n': 2, 'price': 12.49},
'music CD': {'n': 1, 'price': 14.99},
'chocolate bar': {'n': 1, 'price': 0.85}}
exceptions = ["book","food","chocolate", "headache pills"]
def computeTaxes(order):
ord = order.copy()
for item,value in ord.items():
#calculate basic tax
if any(ex in item for ex in exceptions):
ord[item]['tax'] = 0
else:
ord[item]['tax'] = 0.10 * ord[item]['price']
#calculate import duty
if "import" in item:
ord[item]['tax'] += 0.05 * ord[item]['price']
return ord
computeTaxes(data)
# data is now:
{'book': {'n': 2, 'price': 12.49, 'tax': 0},
'music CD': {'n': 1, 'price': 14.99, 'tax': 1.499},
'chocolate bar': {'n': 1, 'price': 0.85, 'tax': 0}}
您應該使用復制庫
import copy
將ord = order.copy()
替換為ord = copy.deepcopy(order)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.