我该如何复制一个列表字典,它的复杂度是多少?我想要复制的字典类似于这样:
myDict = { 'k1': ['a', 'b', 'c'],
'k2': ['d', 'e', 'f'],
'k3': ['g', 'h', 'i'] }
我该如何复制一个列表字典,它的复杂度是多少?我想要复制的字典类似于这样:
myDict = { 'k1': ['a', 'b', 'c'],
'k2': ['d', 'e', 'f'],
'k3': ['g', 'h', 'i'] }
from copy import deepcopy
myCopy = deepcopy(myDict)
deepcopy
总是 唯一的方法。
copy.deepcopy
。 (如果您想自己处理它,请参见源代码以了解所涉及的内容。)list
不是简单的值。您需要分配一个新的列表并复制M
个元素。这需要O(M)时间。由于有N个,所以是O(NM)。deepcopy
的无关部分并将任何剩余的紧密循环移植到Cython或C中,可以想象您可以获得一个数量级的改进。你可以使用内置的字典方法 copy()
来复制一个字典:
示例:
a = {'s':[1,2,3], 'f':[5,4,2]}
b = a.copy()
如果你改变了a
,b
不会改变。
而且复杂度接近于O(1)
,因为字典使用哈希表来存储数据,访问其数据接近于O(1)
,对于列表,访问数据和内存处理是恒定时间,所以接近于O(1)
。
from copy import deepcopy
:从复制模块中导入深度复制函数。 - l4mpi