dictA = {'a':1, 'b':2, 'c':3}
preA = {}
print hex(id(preA))
preB = {}
print hex(id(preB))
dicts = [preA, preB] #<---- looks like I can't save it like this?
for d in dicts:
print hex(id(d))
d = dictA
print preA
print preB
输出:
0x13348b0
0x13357f0
0x13348b0
0x13357f0
{}
{}
看起来它有相同的内存地址但是当我通过变量&#39; preA
&#39;设置preB
或d
时并且从preA
或preB
获取值,就好像它们从未设置过一样。
谁能解释一下这里发生了什么?
答案 0 :(得分:1)
d
在每个循环的迭代中设置为当前字典。设置d = dictA
毫无意义,因为d
将作为第一步更改为下一个字典。
答案 1 :(得分:1)
问题是,您分配的内容实际上不是dict
对象,而是名为d
的变量。如果您在分配后print hex(id(d))
,则应该看到不同的值。为了实际更改dict
值本身,您必须使用一些修改它的函数,例如d["a"] = 1
,或更相关的d.update(dictA)
。