对由'n'个二元组值组成的列表进行序列化

1 投票
1 回答
1059 浏览
提问于 2025-04-16 17:29

我想把一个列表保存下来,因为创建这个列表的时间太长了。这个列表里有“n”个二元组,每个二元组的第一个值是一个很大的字典(有1000到10000个键),第二个值是一个字符串。N的数量可以达到几百到几千。我想保存这样的数据结构,以便以后方便加载。如果这个列表能被人看得懂那当然很好,但我不想牺牲性能。

我对一些工具有了解,比如ShelvePyYamlcPickleJSON。不过,面对我的数据,我不太确定该用哪个。根据我在这个网站和其他地方的初步阅读,大家说cPickle可能是最好的选择。这里有没有高手能给点建议?

1 个回答

1

我会使用 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()

撰写回答