快速嵌套字典副本

时间:2018-05-22 10:38:56

标签: python dictionary

我正在尝试在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)

0 个答案:

没有答案