- 我不明白为什么,当 c=2 和 c=3 时,dict2['A']=1 和 dict2['A']=4 分别而不是 0,即使我使 dict2 等于 dict1,其中dict1 ['A'] = 0?为什么 dict1['A'] 从 0 变化?我不更改任何 dict1 变量!
- 为什么 dict3 在循环中显示正确的值,但只显示循环完成后最后一次迭代 3 的值。
非常感谢你。
import collections
def main():
dict1 = collections.OrderedDict()
dict2 = collections.OrderedDict()
dict3 = collections.OrderedDict()
dict1['A'] = 0
dict1['B'] = 0
dict1['C'] = 0
for c in [1, 2, 3]:
print('c=' + str(c))
dict2 = dict1
print('dict1A=' + str(dict1['A']))
print('dict2A=' + str(dict2['A']))
if c == 1:
dict2['A'] = 1
dict2['B'] = 2
dict2['C'] = 3
elif c ==2:
dict2['A'] = 4
dict2['B'] = 5
dict2['C'] = 6
elif c ==3:
dict2['A'] = 7
dict2['B'] = 8
dict2['C'] = 9
dict3['c' + str(c)] = dict2
print('dict2A=' + str(dict2['A']))
print('dict' + str(c) + 'A=' + str(dict3['c' + str(c)]['A']))
print('dict' + str(c) + 'B=' + str(dict3['c' + str(c)]['B']))
print('dict' + str(c) + 'C=' + str(dict3['c' + str(c)]['C']))
print('dict3-c1A='+ str(dict3['c1']['A']))
print('dict3-c2B=' + str(dict3['c2']['B']))
print('dict3-c3C=' + str(dict3['c3']['C']))
if __name__ == '__main__':
main()
输出:
c=1
dict1A=0
dict2A=0
dict2A=1
dict1A=1
dict1B=2
dict1C=3
c=2
dict1A=1
dict2A=1
dict2A=4
dict2A=4
dict2B=5
dict2C=6
c=3
dict1A=4
dict2A=4
dict2A=7
dict3A=7
dict3B=8
dict3C=9
dict3-c1A=7
dict3-c2B=8
dict3-c3C=9
* 编辑* 非常感谢您的回答。我不知道字典的“=”操作与变量的操作不同。我发现,正如 gddc 所建议的那样, copy() 是我想要的:
dict2 = dict1.copy()