检查搁架中是否存在钥匙的最快方法

时间:2015-03-09 07:22:50

标签: python dictionary shelve

我使用python shelve库预先存储了一个键 - 向量对列表。共有300万个条目,占用6 GB内存。 在单独的培训文件中,我需要检查每条记录是否是搁置字典中的密钥。这使我的程序运行速度极慢。有没有快速的方法来检查货架上是否存在钥匙?或者是否有其他有效的方法来存储python中的键 - 向量对,以便检查密钥是否存在是有效的?

1 个答案:

答案 0 :(得分:3)

使用sqlite3而不是搁置,除了询问任意密钥之外,您还可以查询其他内容。另请注意,shelve未对此类数据库的任何承诺在任何其他Python版本或平台或其任何内容上可用。

更好的是,使用sqlite3 分别存储所有密钥(使用唯一),并通过向量表中的外键引用它们;您可以将密钥列表扫描并保存在内存中set(仅需要说明~40 MiB + 3 M * RAM的平均密钥大小)。