在Python中加载字典的最有效方法是什么?
我有一个大约有1000条记录的Python字典。一个脚本会被反复调用,它需要解析一个字符串,看看这个字符串中是否有任何键匹配。如果有匹配的键,它会根据这个键和对应的值采取一些行动。
那么,下面哪种方法更快呢?
1) 把字典存储在MySQL数据库中,每次调用脚本时都去读取数据库?
2) 把字典存储在一个Python脚本里,每次都导入这个脚本?(比如,做一个只包含字典初始化的文件)
3) 把字典存储在一个文本文件中,每次都导入这个文件?(可以是普通文本文件,也可以是用cpickle序列化的数据文件)
我只是想找一个最佳的做法。
3 个回答
0
为了测试,你可以像这样加载一个字典,里面可以放任何东西(在这个例子中是整数):
D = dict(zip(range(100),range(100)))
0
我觉得把数据存储在一个字典里,然后在每个需要用到它的模块中导入,这样做是个不错的选择。你能通过编程的方式来构建这个字典吗?无论如何,这个文件在程序运行时只会被导入一次,所以如果没有特别的原因,开头加载一次应该没什么大问题。
shelve
也是一个不错的选择。如果你想选择第三种方式,这可能是个好方法。它是基于 anydbm
模块的。虽然这样可能会慢一些,但可以避免一次性把所有数据都加载到内存中。
在我看来,第一种和第三种方式都不太合适。因为进行数据库查询的开销可能会让访问速度变得非常慢。第二种方式则会让一切变得简单,只需要查找字典就可以了。
1
你可以创建一个 .py 的 Python 文件,这个文件里只需要把字典赋值给一个名字。保存这个文件后,把它编译成 .pyc 文件,然后在你的主 Python 脚本需要的时候加载这个模块。
这样做的好处是,你可以保留一个可读的文本格式的字典,方便后续的维护和调试,同时加载 .pyc 文件的速度也很快,而且这一切都是标准的 Python,简单易懂。