关于数据库:在Python中加载字典的最有效方法是什么?

What's the most efficient way to load a dictionary in Python?

我有一本大约1000条的Python字典。将重复调用一个脚本,该脚本希望解析一个字符串,并查看字符串中是否有匹配的键。如果有,它将根据键和值采取一些操作。

哪个更快?

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

2)将字典存储在python脚本中,并每次导入?(例如,生成只包含字典初始化的文件)

3)将字典存储在文本文件中,并每次导入?(使用cpickle,可以是纯文本文件,也可以是pickle序列化数据文件)

只是在这里寻找最佳实践。


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

这样做的好处是,为维护/调试保留了一个可读的dict文本表示,加载.pyc文件的速度快,而且所有这些文件的简单性都是标准的python。


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

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


我认为将它作为字典存储在一个python文件中,并导入到每个需要它的模块中是一种可行的方法。你能用程序来构造它吗?不管怎样,每个程序执行一次文件实际上只导入一次,所以它不应该是一件大事,除非您知道出于某种原因,在开始时加载一次文件是不可接受的。

shelve可能是另一种方式。如果您想使用选项(3),这可能是实现这一点的方法,它构建在anydbm模块上。这可能会慢一些,但会让你避免把整个事情同时记在记忆中。

在我看来,1)和3)都是正确的。数据库查询的开销很可能会大大降低访问速度。选项2)将使其成为一个简单的dict查找。