访问键值对的最快方法?

时间:2015-05-22 15:18:50

标签: python

我希望这个问题不太具体:我有一个类似数据库的大型列表(约900,000个条目),我想用它来处理文本文件。 (更多细节如下。)由于这个列表将被编辑并与其他程序一起使用,我宁愿将它保存在一个单独的文件中,并将其包含在python代码中,直接或通过将其转储为python可以的某种格式使用。我想知道你是否可以就最快最有效的方式提出建议。我看了几个选项,但可能没有看到最好的选择:

  1. 的形式将列表包含为python词典
    0.5

    直接进入我的python代码。

  2. 将列表转储到sqlite数据库并使用sqlite3模块。
  3. 将列表作为yml文件并使用yaml模块。
  4. 如果我处理文本文件并希望在30,000行之类的内容上进行替换,那么这些方法如何扩展?

    对于那些感兴趣的人:这是用于语言处理,特别是古希腊语。该列表是希腊形式的详尽列表以及它们源自的主要词汇。对于文本文件中的每个单词形式,我想添加字典头字。

4 个答案:

答案 0 :(得分:1)

点1比使用YAML或SQL快得多,因为@ b4hand和@DeepSpace指示。你应该做的不是包括你正在开发的其余python代码中的列表,正如你所指出的那样,但只用那个字典做一个单独的.py文件定义

这样,该文件中的列表更容易从程序中编写(或由程序扩展)。并且,在首次导入时,将创建.pyc,以加快重新读取程序的进一步运行。这实际上在性能上非常相似 使用pickle模块并将字典翻译成文件并从那里读回来,同时将字典保持在易于阅读和编辑的形式。

答案 1 :(得分:0)

如果您正在寻找速度,选项1应该是最快的,因为其他2将需要重复访问将成为瓶颈的HD。

答案 2 :(得分:0)

我会使用缓存机制来保存这些数据,或者像redis一样使用数据结构存储。在内存中加载所有这些可能会变得太昂贵。

答案 3 :(得分:0)

不到一百万个条目并不大,应该很容易适应内存。因此,您最好的选择是选项1.