我想腌制一个列表,因为创建列表需要很长时间。该列表由“n”个 2 元组值组成,其中第一个元组值是一个大字典(1k 到 10k 个键),第二个值是一个字符串。N 可以大到 100s 到 1000s。我想保存这样的数据结构,以便我可以方便地加载它。如果列表是人类可读的,那就太好了,但不会以性能为代价。
我了解Shelve、PyYaml、cPickle和JSON。我只是不确定根据我的数据使用什么。初步阅读本网站和互联网上的各种其他线程表明 cPickle 可能是最佳选择。这里的大师有什么想法吗?
我会使用cPickle
,这很好用,
# Dummy data
from random import randint as r
a,b = 97,123
d = [(dict([(chr(r(a,b)),j) for j in range(1000)]),
''.join([chr(r(a,b)) for i in range(5)]))
for j in range(100)]
# Pickle it
import cPickle as pickle
f = open('store.dat','w')
pickle.dump(d,f)
f.close()
我也会考虑使用类似dumbdbm的东西。
稍后添加
按照上面的例子,你可以做这样的事情,
import dumbdbm as dbm
g = dbm.open('store.db')
g.update([(str(i),pickle.dumps(j)) for i,j in enumerate(d)])
g.close()