Python 字典 copy()方法
描述
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 字典 copy()方法的更多相关文章
- python字典copy()方法
python 字典的copy()方法表面看就是深copy啊,明显独立 d = {'a':1, 'b':2} c = d.copy() print('d=%s c=%s' % (d, c)) Code1 ...
- Python 字典 fromkeys()方法
Python 字典 fromkeys() 方法用于创建一个新的字典,并以可迭代对象中的元素分别作为字典中的键,且所有键对应同一个值,默认为None. fromkeys() 方法语法: 1 dict.f ...
- Python 字典 popitem() 方法
描述 Python 字典 popitem() 方法随机返回并删除字典中的一个键/值对(一般删除末尾对). 如果字典已经为空,却调用了此方法,就报出KeyError异常. 语法 popitem() 方法 ...
- Python 字典 pop() 方法
描述 Python 字典 pop() 方法删除给定键所对应的键/值对,并返回被删除的值.给定键如果不在字典中,则必须设置一个default值,否则会报错,此时返回的就是default值. 语法 pop ...
- Python 字典 values() 方法
描述 Python 字典 values() 方法以列表形式(并非直接的列表,若要返回列表值还需调用list函数)返回字典中的所有值. 语法 values() 方法语法: D.values() 参数 无 ...
- Python 字典 update() 方法
描述 Python 字典 update() 方法用于更新字典中的键/值对,可以修改存在的键对应的值,也可以添加新的键/值对到字典中. 用法与 Python dict() 函数相似. 语法 update ...
- Python 字典 keys() 方法
描述 Python 字典 keys() 方法以列表形式(并非直接的列表,若要返回列表值还需调用list函数)返回字典中的所有的键. 语法 keys() 方法语法: D.keys() 参数 无. 返回值 ...
- Python 字典 items() 方法
描述 Python 字典 items() 方法以列表形式(并非直接的列表,若要返回列表值还需调用list函数)返回可遍历的(键, 值) 元组数组. 语法 items() 方法语法: D.items() ...
- Python 字典 clear()方法
描述 Python 字典 clear() 方法用于删除字典内所有元素. 语法 clear() 方法语法: D.clear() 参数 无. 返回值 该方法没有任何返回值. 实例 以下实例展示了 clea ...
随机推荐
- CSS 的优先级机制总结
一.样式优先级: 多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使用多重样式的情况. 一般情况下,大家都认为优先级是:内联样式 > 内部样 ...
- GO语言基础之interface
接口interface 1. 接口是一个或多个方法签名的集合 2. 只要某个类型拥有该接口的所有方法签名,即算实现该接口,无需显示声明实现了哪个接口,这称为 Structural typing 3. ...
- 关于帝国CMS迁移到新服务器上出现问题的处理办法
在帝国CMS项目整体迁移过程中,或多或少总会出点幺蛾子,以下就常见的注意事项整理一下: 一.修改 e/config/config.php中的数据库相关配置 二.让项目文件位置具有读写权限 三.设置ph ...
- Typescript declaration: Merge a class and an interface
参考: https://stackoverflow.com/questions/47670959/typescript-declaration-merge-a-class-and-an-interfa ...
- c++ 编译时检测结构体大小的的宏定义写法
一种写法: template <bool> struct CompileAssert { }; #define COMPILE_ASSERT(expr, msg) \ typedef Co ...
- [Backbone] Customzing Backbone
Convert the AppointmentForm view below to use Mustache templating. Make sure you remember to change ...
- ZOJ 3587 扩展KMP
思路:这题确实大帝做得非常机智!字符串先求最长前缀,反的字符串再求一次最长前缀.然后就能够搞了. 每一个子串出现的次数就是最长前缀的次数嘛! #pragma comment(linker, " ...
- C#.NET常见问题(FAQ)-如何引用定义好的dll文件
1 添加引用,找到dll文件 2 引用类的名称空间,生成类的实例,调用类的方法,测试OK. 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com ...
- 把普通java项目转换成maven项目
我使用的是eclipse,右键项目,Configure->Convert to Maven Project 然后就是jar包的引入了,如果jar包比较简单,建议从maven中拉取,这样便于后期升 ...
- STL - 容器 - Map(一)
MapTest.cpp #include <map> #include <string> #include <iostream> #include <algo ...