[英]Iterate and update python dictionary not working
嘗試遍歷字典並相應地更新其值。 由於某種原因,我無法使其正常工作。 我在下面創建了一個簡單的示例。 它將最后一個迭代的“ id”保存到字典中的兩個鍵值中。
示例代碼是:
import copy
#####
def setParams(params):
for key,valuesDict in params.items():
print(key)
params[key]['target']['id'] = key
targetDict = {'id':"",'value':0}
myParamsTemplate = {'target':targetDict}
first = copy.copy(myParamsTemplate)
second = copy.copy(myParamsTemplate)
params = {"1":first,"2":second}
print("before:\n",params)
setParams(params)
print("after:\n",params)
打印出:
before:
{'1': {'target': {'id': '', 'value': 0}}, '2': {'target': {'id': '', 'value': 0}}}
1
2
after:
{'1': {'target': {'id': '2', 'value': 0}}, '2': {'target': {'id': '2', 'value': 0}}}
“ id”應分別為1和2,但兩者的結果始終為“ 2”。
因為您只在進行淺表復制(不會復制最里面的字典)。 您可以通過打印params["1"]["target"] is params["2"]["target"]
來輕松驗證這一點,它應該返回True
(這意味着它們是同一對象)。
您可以使用copy.deepcopy
使其工作:
first = copy.deepcopy(myParamsTemplate)
second = copy.deepcopy(myParamsTemplate)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.