在 Python 中使用 pickle 高效地访问字典中的项目

6 python pickle

我有一个大字典将键(字符串)映射到对象。我腌制了这本大字典,有时我只想从中取出少数条目。该词典通常总共有数千个条目。当我使用pickle加载字典时,如下:

from cPickle import *
# my dictionary from pickle, containing thousands of entries
mydict = open(load('mypickle.pickle'))
# accessing only handful of entries here
for entry in relevant_entries:
  # find relevant entry
  value = mydict[entry]
Run Code Online (Sandbox Code Playgroud)

我注意到加载整个 pickle 可能需要 3-4 秒,但我不需要,因为稍后我只访问字典条目的一小部分(如上所示)。

我怎样才能使pickle只加载我从字典中获得的那些条目,以使其更快?

谢谢。

kri*_*iss 0

如果您的对象彼此独立,您可以使用它们的密钥作为文件名单独对它们进行 pickle 和 unpickle,以某种反常的方式,目录是一种将文件名映射到文件的字典。这样就可以很简单地仅加载相关条目。

基本上,您使用内存字典作为缓存,如果搜索到的键丢失,请尝试从文件系统加载文件。

我并不是真的说你应该这样做。数据库(ZODB、SQLite 等)可能更适合持久存储。