在学习Python的过程中,难免会遇到各种各样奇怪的问题,而自己的技能也就是在解决这样一个又一个的问题中才能得到提高,下面就记录我在做一个实操中遇到的一个问题:
问题描述:我在for循环中将相应的key与value加入到一个字典的过程中,我预期的结果是已经加入到字典中的对应的key的value就不会再改变了,但是结果是在下一次加入新的key与对应的value的时候,前面已经在字典中的key对应的value也变为了新加入的key对应的value,具体的信息可以见我的提问:麻烦问下我的这段代码为什么运行结果跟我想的不一样,求指导?
问题原因:经过大神的指点,我明白了,我的for循环里面在将key与相应的value加入到字典中的过程中,给的value值相当于是一个变量,当这个变量变化的时候之前已经加入到字典中的value值也就随之变化了。
实例:
a=[[1,50],[2,60],[3,70],[4,80]]
b=['a','b','c','d']
one={}
two={}
for i in range(1,5):
for g in b:
one[g]=a[i-1]
two[i]=one
print(two)
打印结果为:
{1: {‘a’: [4, 80], ‘b’: [4, 80], ‘c’: [4, 80], ‘d’: [4, 80]}, 2: {‘a’: [4, 80], ‘b’: [4, 80], ‘c’: [4, 80], ‘d’: [4, 80]}, 3: {‘a’: [4, 80], ‘b’: [4, 80], ‘c’: [4, 80], ‘d’: [4, 80]}, 4: {‘a’: [4, 80], ‘b’: [4, 80], ‘c’: [4, 80], ‘d’: [4, 80]}}
可见最终two字典里面嵌套的one字典的value值都变为了[4,80]。
来源:CSDN
作者:python代码狗
链接:https://blog.csdn.net/weixin_43514785/article/details/103864688