在Python中加载字典的最有效方法是什么?

时间:2010-11-27 05:58:59

标签: python database dictionary pickle

我有~1000条目的Python字典。将重复调用脚本,该脚本将要解析字符串并查看字符串中的任何键是否匹配。如果他们这样做,将根据密钥和值采取一些行动。

其中哪一项更快?

1)将字典存储在MySQL数据库中,然后在每次调用脚本时读取数据库?

2)将字典存储在Python脚本中并每次导入它? (例如,创建一个只包含字典初始化的文件)

3)将字典存储在文本文件中,每次都导入? (平面文本文件或pickle序列化数据文件,使用cpickle)

在这里寻找最佳实践。

3 个答案:

答案 0 :(得分:1)

您可以创建一个.py Python文件,只将字典分配给名称。保存文件。将文件编译为.pyc,然后在主Python脚本需要时将其作为模块加载。

您可以获得维护/调试dict的可读文本表示,加载.pyc文件的速度以及所有标准Python的简单性。

答案 1 :(得分:0)

我认为将它作为字典存储在python文件中并导入到需要它的每个模块中都是可行的方法。你能以编程方式构建它吗?无论哪种方式,文件只会在每次执行程序时实际导入一次,所以它不应该是一个大问题,除非你知道在开始时加载它一次是不可接受的。

shelve可能是另一种方式。如果您想使用选项(3)它可能是这样做的方法它建立在anydbm模块上。这可能会慢一点,但可以让你避免让整个事情一下子在内存中。

在我看来,1)和3)都是正确的。进行数据库查询的开销很可能会大大降低访问速度。选项2)将使所有简单的字典查找。

答案 2 :(得分:0)

出于测试目的,您还可以加载字典(本例中为整数),如下所示:

    D = dict(zip(range(100),range(100)))