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

3 投票
3 回答
3809 浏览
提问于 2025-04-16 07:40

我有一个大约有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,简单易懂。

撰写回答