我正在尝试在python中复制大字典(保存为原始json时为10MB)
最快的方法是什么?
是否有任何c扩展程序可以快速执行此副本?
到目前为止我找到了
ujson.loads(ujson.dumps(my_dict))
成为看起来很奇怪的最快的选项(如何将字典转换为字符串,然后从字符串转换为新的字典比一些纯文本更快)
以下是我尝试过的方法示例及其小字典的运行时间(当然结果更清晰,使用更大的字典):
x = {'a':1,'b':2,'c':3,'d':4, 'e':{'a':1,'b':2}}
#this function only handle dict of dicts
def fast_copy(d):
output = d.copy()
for key, value in output.items():
output[key] = fast_copy(value) if isinstance(value, dict) else value
return output
from copy import deepcopy
import ujson
%timeit deepcopy(x)
13.5 µs ± 146 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit fast_copy(x)
2.57 µs ± 31.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit ujson.loads(ujson.dumps(x))
1.67 µs ± 14.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)