我有一个Python程序,它可以很好地处理字典。我得把字典复印几千次。我需要一份钥匙和相关内容的副本。副本将被编辑,并且不得链接到原始副本(例如,副本中的更改不得影响原始副本)。
键是字符串,值是整数(0/1)。
我目前使用一种简单的方法:
newDict = oldDict.copy()
分析我的代码显示,复制操作花费了大部分时间。
有没有比dict.copy()
方法更快的替代方法?什么是最快的?
发布于 2011-05-03 03:42:15
查看Python dict
操作的C source,您可以看到它们执行了非常简单(但高效)的复制。它本质上归结为对PyDict_Merge
的调用
PyDict_Merge(PyObject *a, PyObject *b, int override)
这会快速检查它们是否是相同的对象,以及其中是否有对象。在此之后,它对目标dict执行一次慷慨的调整大小/分配,然后逐个复制元素。我不认为你会比内置的copy()
更快。
发布于 2011-05-03 03:39:10
正如你所说,看起来dict.copy更快。
[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
发布于 2011-05-03 03:32:26
你能提供一个代码示例,让我看看你是如何使用copy()的,在什么上下文中使用?
你可以使用
new = dict(old)
但我不认为它会更快。
https://stackoverflow.com/questions/5861498
复制相似问题