我正在做一些Python基本操作(3.6,但也在Python 2.11中測試 - 行爲是相同的)和字典。下面是代碼示例:Python管理多個詞典
max_values = dict()
min_values = dict()
initial_values = {"stat": 2, "value": 5.5}
max_values["zzz"] = initial_values
min_values["zzz"] = initial_values
到目前爲止好,當我打印這些字典:
for key, value in max_values.items():
print("[%s] Key [%s] -> Value [%s]" % ("max_values", key, value))
for key, value in min_values.items():
print("[%s] Key [%s] -> Value [%s]" % ("min_values", key, value))
我得到我預期的結果:
[max_values] Key [zzz] -> Value [{'stat': 2, 'value': 5.5}]
[min_values] Key [zzz] -> Value [{'stat': 2, 'value': 5.5}]
但是,如果我嘗試修改與值,例如:
min_values["zzz"]["value"] = 1.0
並再次做同樣的打印,我得到:
[max_values] Key [zzz] -> Value [{'stat': 2, 'value': 1.0}]
[min_values] Key [zzz] -> Value [{'stat': 2, 'value': 1.0}]
的問題是:爲什麼在max_values
字典改變?我只修改min_values
,但這個新的關鍵任務min_value
字典也修改max_values
。難道我做錯了什麼?
確認** _不復制_ **。這兩個詞典鍵都有對同一個詞典的引用。您需要明確告訴Python爲兩個鍵創建'initial_values'副本。 –
'max_values [「zzz」] = dict(initial_values)' –
@ Jean-FrançoisFabre或'max_values [「zzz」] = initial_values.copy()'。 –