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
{}
{}
看起来它有相同的内存地址,但当我通过变量“d
”设置preA
或preB
并从preA
或preB
获取值时,就好像它们从未设置过一样。你知道吗
有人能解释一下这是怎么回事吗?你知道吗
d
在每个循环的迭代中设置为当前字典。设置d = dictA
毫无意义,因为d
将作为第一步更改为下一个字典。你知道吗问题是,您分配给的对象实际上不是
dict
对象,而是名为d
的变量。如果在赋值之后print hex(id(d))
,应该会看到不同的值。为了实际更改dict
值本身,您必须对它使用一些函数来修改它,例如d["a"] = 1
,或者更相关的是这里的d.update(dictA)
。你知道吗相关问题 更多 >
编程相关推荐