方法copy返回一个新字典,其包含的键-值对与原来的字典相同(这个方法执行的是浅复制,因为值本身是原件,而不是副本)。

>>> x = {"username": "hello", "machines": ["one", "two", "three"]}
>>> y = x.copy()
>>> y["username"] = "hi"
>>> y["machines"].append("four")
>>> y
{'username': 'hi', 'machines': ['one', 'two', 'three', 'four']}
>>> x
{'username': 'hello', 'machines': ['one', 'two', 'three', 'four']}

当替换副本的值的时候,原件不受影响。当时当修改副本中的值(就地修改,而不是替换),原件也将发生变化,因为原件指向的也是被修改的值。

为避免这个问题,一种办法是执行深复制,即同时复制值以及其包含的所有值等等。可以使用copy模块中的deepcopy函数。

>>> from copy import deepcopy
>>> d = {}
>>> d["name"] = ["Alice", "Ben"]
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d["name"].append("Clive")
>>> c
{'name': ['Alice', 'Ben', 'Clive']}
>>> dc
{'name': ['Alice', 'Ben']}

最新文章

  1. 总结项目开发中用到的一些css\html技巧
  2. 1280*720P和1920*1080P的视频在25帧30帧50帧60帧时的参数
  3. PHP正则表达式详解(二)
  4. C#联合Union的实现方式
  5. usaco 2010年3月银组题解
  6. String定义与方法
  7. Android 系统日期时间的获取
  8. 【转】Java 多线程(四) 多线程访问成员变量与局部变量
  9. 金额的计算BigDecimal类
  10. libuv 初窥--转
  11. 读书笔记:《梦断代码Dreaming in Code》
  12. 35. leetcode 501. Find Mode in Binary Search Tree
  13. LeetCode 120. Triangle (三角形)
  14. 用原型代替PRD时,原型应该包含哪些内容
  15. [Python] Python 学习 - 可视化数据操作(一)
  16. nvm的安装
  17. ISO GPS定位,坐标转换以及如何显示
  18. HDU1506(真心不错的DP)
  19. oc 中的id类型与类型转换
  20. UVA+POJ中大数实现的题目,持续更新(JAVA实现)

热门文章

  1. linux下vnstat查看服务器带宽流量统计
  2. python面试题之阅读下面的代码,它的输出结果是什么?
  3. void v.s. void *
  4. vue-cli3使用cdn引入
  5. npm 安装扩展模块时,因缓存报错的问题汇总
  6. fastjson转换包含date类型属性的对象时报错com.alibaba.fastjson.JSONException: For input string: "13:02:19"
  7. 新手创建多module mvn工程
  8. 【JS学习】慕课网2-7 练习题:制作新按钮,“新窗口打开网站” ,点击打开新窗口。
  9. python制作坦克对战
  10. webpack引入全局jQuery