Python-字典引用赋值变量之发现

  1. python中把一个字典的value赋值给变量,修改变量,被引用是字典的value也会被修改。
    值的注意的是,字典里的Key和Value都是对象的引用,不是对象本身。引用没有变,变得只是引用地址空间的值。
    实测该情况,对于value为字典或者列表的引用赋值,之后修改后,原有字典的value被修改。
    猜测字典,列表,集合引用的是地址空间里的值,这些数据类型会被修改。
d1 = {'k1':[1,2,3,4,5]}
t1 = d1['k1']
t1[0] = 9
print(d1['k1'])     # [9, 2, 3, 4, 5]
#
d2 = {'k1':'v1'}
t2 = d2['k1']
print(t2)            # v1
t2 = 'v2'
print(d2)           # {'k1': 'v1'}
#
d3 = {'k1':{'kk1':'v1'}}
t3 = d3['k1']
print(t3)            # {'kk1': 'v1'}
t3['kk1'] = 'v2'
print(d3)           # {'k1': {'kk1': 'v2'}}
  1. 对于不需要改变引用字典的内部结构的情况,可以使用深拷贝
import copy
d4 = {'k1':[1,2,3,4,5]}
t4 = copy.deepcopy(d4['k1'])
t4[0] = 9
print(d4)   # {'k1': [1, 2, 3, 4, 5]}

posted on 2018-01-17 16:03  运维小学生  阅读(12301)  评论(0编辑  收藏  举报

导航