Python学习笔记之问题记录(一)——字典添加操作遇坑

寵の児 提交于 2020-01-10 04:54:53

在学习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]。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!