首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中复制字典的快速方法

在Python中复制字典的快速方法
EN

Stack Overflow用户
提问于 2011-05-03 03:25:23
回答 5查看 84.8K关注 0票数 92

我有一个Python程序,它可以很好地处理字典。我得把字典复印几千次。我需要一份钥匙和相关内容的副本。副本将被编辑,并且不得链接到原始副本(例如,副本中的更改不得影响原始副本)。

键是字符串,值是整数(0/1)。

我目前使用一种简单的方法:

代码语言:javascript
复制
newDict = oldDict.copy()

分析我的代码显示,复制操作花费了大部分时间。

有没有比dict.copy()方法更快的替代方法?什么是最快的?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-05-03 03:42:15

查看Python dict操作的C source,您可以看到它们执行了非常简单(但高效)的复制。它本质上归结为对PyDict_Merge的调用

代码语言:javascript
复制
PyDict_Merge(PyObject *a, PyObject *b, int override)

这会快速检查它们是否是相同的对象,以及其中是否有对象。在此之后,它对目标dict执行一次慷慨的调整大小/分配,然后逐个复制元素。我不认为你会比内置的copy()更快。

票数 65
EN

Stack Overflow用户

发布于 2011-05-03 03:39:10

正如你所说,看起来dict.copy更快。

代码语言:javascript
复制
[utdmr@utdmr-arch ~]$ python -m timeit -s "d={1:1, 2:2, 3:3}" "new = d.copy()"
1000000 loops, best of 3: 0.238 usec per loop
[utdmr@utdmr-arch ~]$ python -m timeit -s "d={1:1, 2:2, 3:3}" "new = dict(d)"
1000000 loops, best of 3: 0.621 usec per loop
[utdmr@utdmr-arch ~]$ python -m timeit -s "from copy import copy; d={1:1, 2:2, 3:3}" "new = copy(d)"
1000000 loops, best of 3: 1.58 usec per loop
票数 58
EN

Stack Overflow用户

发布于 2011-05-03 03:32:26

你能提供一个代码示例,让我看看你是如何使用copy()的,在什么上下文中使用?

你可以使用

代码语言:javascript
复制
new = dict(old)

但我不认为它会更快。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5861498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档