二维码

什么是深度复制python dict或列表中的数据的快速pythonic方法?

1636 人阅读 | 时间:2018年12月27日 10:07

当我们需要从包含原始数据类型的字典中复制完整数据时(为简单起见,让我们忽略数据类型的存在,比如datetime等),我们最明显的选择是使用deepcopy,但深度复制比其他一些实现的hackish方法慢相同的,例如使用序列化 - 非序列化,例如json-dump-json-load或msgpack-pack-msgpack-unpack。效率的差异可以在这里看到:

>>> import timeit>>> setup = '''
... import msgpack
... import json
... from copy import deepcopy
... data = {'name':'John Doe','ranks':{'sports':13,'edu':34,'arts':45},'grade':5}
... '''>>> print(timeit.timeit('deepcopy(data)', setup=setup))12.0860249996>>> print(timeit.timeit('json.loads(json.dumps(data))', setup=setup))9.07182312012>>> print(timeit.timeit('msgpack.unpackb(msgpack.packb(data))', setup=setup))1.42743492126

json和msgpack(或cPickle)方法比普通的深度复制更快,这很明显,因为深度复制在复制对象的所有属性方面也会做得更多。

问题:是否有更多的pythonic /内置方法来实现字典或列表的数据副本,而没有深度复制所具有的所有开销?


取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
关闭广告
关闭广告
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×