在循环中设置容器

2024-09-30 16:41:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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”设置preApreB并从preApreB获取值时,就好像它们从未设置过一样。你知道吗

有人能解释一下这是怎么回事吗?你知道吗


Tags: inidforsaveitthiscanlike
2条回答

d在每个循环的迭代中设置为当前字典。设置d = dictA毫无意义,因为d将作为第一步更改为下一个字典。你知道吗

问题是,您分配给的对象实际上不是dict对象,而是名为d的变量。如果在赋值之后print hex(id(d)),应该会看到不同的值。为了实际更改dict值本身,您必须对它使用一些函数来修改它,例如d["a"] = 1,或者更相关的是这里的d.update(dictA)。你知道吗

相关问题 更多 >