繁体   English   中英

在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的简单性。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM