我正在做一些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()'。 –