python_copy

浅copy

data = {
    "name":"chaoyang",
    "age":"28",
    "scores":{
         "语文":130,
        "数学":60,
        "英语":98,
    }
}

d = data
data["age"] = 20
print(d)
{'name': 'chaoyang', 'age': 20, 'scores': {'语文': 130, '数学': 60, '英语': 98}}

为何是20呢,因为d=data相当于只是拿到了data的内存地址,但data里的每个k,v都是有单独的内存的地址的。d,data会一直共享这个dict里的数据,不会出现像之前字符串a=1,b=a, a=2, b依然等于1的情况。

复制一份dict数据

>>> data
{'name': 'chaoyang', 'age': 20, 'scores': {'语文': 130, '数学': 60, '英语': 98}}
>>> d1 = data.copy()
>>> data["age"] = 22
>>> print(d1)
{'name': 'chaoyang', 'age': 20, 'scores': {'语文': 130, '数学': 60, '英语': 98}}
>>> print(data)
{'name': 'chaoyang', 'age': 22, 'scores': {'语文': 130, '数学': 60, '英语': 98}}

相当于有2份独立的数据了,但是修改scores的值

>>> data
{'name': 'chaoyang', 'age': 22, 'scores': {'语文': 130, '数学': 60, '英语': 98}}
>>> d2 = data.copy()
>>> data["age"] = 20
>>> data["scores"]["数学"] = 120
>>> data
{'name': 'chaoyang', 'age': 20, 'scores': {'语文': 130, '数学': 120, '英语': 98}}
>>> d2
{'name': 'chaoyang', 'age': 22, 'scores': {'语文': 130, '数学': 120, '英语': 98}}

两个dict的值是独立的,但score字典里的数据是共享的,故scores下的数据是共享一份的

深copy

复制两份完全独立的数据

>>> import copy
>>> data
{'name': 'chaoyang', 'age': 20, 'scores': {'语文': 130, '数学': 120, '英语': 98}}
>>> d2 = data.copy()
>>> d3 = copy.deepcopy(data)
>>> d3["scores"]["语文"] = 140
>>> print(data)
{'name': 'chaoyang', 'age': 20, 'scores': {'语文': 130, '数学': 120, '英语': 98}}
>>> print(d3)
{'name': 'chaoyang', 'age': 20, 'scores': {'语文': 140, '数学': 120, '英语': 98}}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值