描述

Python 字典 copy() 方法返回一个字典的浅拷贝(父不变,子变)。

语法

copy() 方法语法:

D.copy()

参数

  • 无。

返回值

返回一个字典的浅拷贝(父不变,子变)。

实例

以下实例展示了 copy() 方法的使用方法:

#!/usr/bin/python3

D1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

D2 = D1.copy()
print ("新复制的字典为 : ",D2)

以上实例输出结果为:

新复制的字典为 :  {'Age': 7, 'Name': 'Runoob', 'Class': 'First'}

直接引用、浅拷贝、深拷贝的区别

可以通过以下实例说明:

# !/usr/bin/python
# -*- coding: UTF-8 -*- import copy D1 = {'user': 'runoob', 'num': [1, 2, 3]} # 原始数据
D2 = D1 # 直接引用:D2和D1整体指向同一对象。
D3 = D1.copy() # 浅拷贝:D3和D1的父对象是一个独立的对象,但是他们的子对象还是指向同一对象。
D4 = copy.deepcopy(D1) # 深拷贝:D4和D1的整体是一个独立的对象。 D1['user'] = 'root' # 修改父对象D1
D1['num'].remove(1) # 修改父对象D1中的[1, 2, 3]列表子对象 print('原始数据:',{'user': 'runoob', 'num': [1, 2, 3]}) # 原始数据
print('改后数据:',D1) # 父子都修改过的
print('直接引用:',D2) # 父子都变(直接引用)
print('浅拷贝:',D3) # 父不变,子变(浅拷贝)
print('深拷贝:',D4) # 父子都不变(深拷贝)

实例中 D2 其实是 D1 的赋值引用(别名),所以输出结果都是一致的;D3 是对D1的浅拷贝,父对象不会随D1修改而修改,子对象随D1的修改而修改;D4 是对D1的深拷贝,父对象和子对象都不会随D1修改而修改。

输出结果如下:

原始数据: {'user': 'runoob', 'num': [1, 2, 3]}
改后数据: {'user': 'root', 'num': [2, 3]}
赋值引用: {'user': 'root', 'num': [2, 3]}
浅拷贝: {'user': 'runoob', 'num': [2, 3]}
深拷贝: {'user': 'runoob', 'num': [1, 2, 3]}

知识扩展

Python直接赋值、浅拷贝和深度拷贝解析

Python 字典 copy()方法的更多相关文章

  1. python字典copy()方法

    python 字典的copy()方法表面看就是深copy啊,明显独立 d = {'a':1, 'b':2} c = d.copy() print('d=%s c=%s' % (d, c)) Code1 ...

  2. Python 字典 fromkeys()方法

    Python 字典 fromkeys() 方法用于创建一个新的字典,并以可迭代对象中的元素分别作为字典中的键,且所有键对应同一个值,默认为None. fromkeys() 方法语法: 1 dict.f ...

  3. Python 字典 popitem() 方法

    描述 Python 字典 popitem() 方法随机返回并删除字典中的一个键/值对(一般删除末尾对). 如果字典已经为空,却调用了此方法,就报出KeyError异常. 语法 popitem() 方法 ...

  4. Python 字典 pop() 方法

    描述 Python 字典 pop() 方法删除给定键所对应的键/值对,并返回被删除的值.给定键如果不在字典中,则必须设置一个default值,否则会报错,此时返回的就是default值. 语法 pop ...

  5. Python 字典 values() 方法

    描述 Python 字典 values() 方法以列表形式(并非直接的列表,若要返回列表值还需调用list函数)返回字典中的所有值. 语法 values() 方法语法: D.values() 参数 无 ...

  6. Python 字典 update() 方法

    描述 Python 字典 update() 方法用于更新字典中的键/值对,可以修改存在的键对应的值,也可以添加新的键/值对到字典中. 用法与 Python dict() 函数相似. 语法 update ...

  7. Python 字典 keys() 方法

    描述 Python 字典 keys() 方法以列表形式(并非直接的列表,若要返回列表值还需调用list函数)返回字典中的所有的键. 语法 keys() 方法语法: D.keys() 参数 无. 返回值 ...

  8. Python 字典 items() 方法

    描述 Python 字典 items() 方法以列表形式(并非直接的列表,若要返回列表值还需调用list函数)返回可遍历的(键, 值) 元组数组. 语法 items() 方法语法: D.items() ...

  9. Python 字典 clear()方法

    描述 Python 字典 clear() 方法用于删除字典内所有元素. 语法 clear() 方法语法: D.clear() 参数 无. 返回值 该方法没有任何返回值. 实例 以下实例展示了 clea ...

随机推荐

  1. 20个代码生成框架 (.NET JAVA)

    1.1 CodeSmith 一款人气很旺国外的基于模板的dotnet代码生成器 官方网站:http://www.codesmithtools.com 官方论坛:http://forum.codesmi ...

  2. C#中HTML和UBB互相转换的代码

    C#中HTML和UBB互相转换的代码html转UBB的还不是很完美,有空修改,一些代码来自百度谷歌 private string DoHtmlToUBB(string _Html)        {  ...

  3. Android之TelephonyManager

    在Android平台中,通过TelephonyManager可以访问与手机通讯相关的信息,比如设备信息.网络信息及SIM卡信息,同时还可以监听电话的相关状态.下面我们通过几个方面来说明Android平 ...

  4. Linux 学习 step by step (1)

    做为一个技术小菜的android的程序员,做应用层的app觉得没有什么意思,于是像多学点android底层的知识.最近在看<Android 技术内幕(系统卷)> . 我打开书的第一张,便花 ...

  5. Redis自学笔记—PHP

    connect 实例连接到一个Redis. $redis = new redis(); $result = $redis->connect('127.0.0.1', 6379); var_dum ...

  6. 为Ubuntu 安装Transmission 2.90

    Transmission 是 Ubuntu 的默认 BitTorrent 客户端,近期发布了最新的 Transmission 2.90 版本,目前已经可通过 PPA 为 Ubuntu 15.10.Ub ...

  7. 8. 利用反射机制, ListArray,intent来实现多Activity的切换

    package com.example.thenewboston; import android.app.ListActivity; import android.content.Intent; im ...

  8. javascript获取数组种最大值?

    Array.prototype.max = function () { return Math.max.apply({}, this) } Array.prototype.min = function ...

  9. 安装--->Tomcat监控工具Probe

    1.Porbe介绍 psi-probe用于对Tomcat进行监控,比tomcat的manager强大很多. 2.下载 probe-2.3.3.zip  或者  probe.war 3.将下载好的war ...

  10. 在Lotus Notes设置邮件转发

    Notes里面设置邮件转发,一种是创建一个Agent代理,但这种方式有弊端,就是邮件标题缺失,这个比较别扭.这里就不推荐了. 另一种方法是创建Rule规则,这种方式完美.具体方法如下: 1.点Tool ...