使用Python应用程序分发的资源最少的数据结构是什么

PyN*_*bie 0 python database dictionary

我正在构建一个应用程序,以分发给其他学者.应用程序将采用用户提交的三个参数,并输出与这些事件相关的日期和代码列表.我一直在使用字典构建它,并打算构建应用程序,以便在应用程序调用它时从pickle文件加载字典.用户提供的参数将用于查找所需的输出.

我之所以选择这种结构,是因为我对词典和腌菜文件非常熟悉,而且我认为这是我学习曲线最小的问题.字典中可能有多达两百万个键.我对我的机器上有一个合理的子集的性能感到满意.我已经考虑过如何在将整个事情放在一起时遇到任何性能问题时如何打破字典.由于我们正在使用TB级存储值,因此我并不担心其计算机上的磁盘空间量.

说完所有这些我一直在讨论文档,我想知道我是否需要花一些时间来学习和实现替代数据存储文件.我能想到的唯一原因是,是否存在可以将查找速度提高三到五倍或更多的替代方案.

mha*_*wke 6

标准shelve模块将为您提供存储在dbm样式数据库中的持久字典.假设你的键是字符串而你的值是可选择的(因为你已经使用了pickle,这必须是真的),这可能是一个更好的解决方案,只需将整个字典存储在一个pickle中.

例:

>>> import shelve
>>> d = shelve.open('mydb')
>>> d['key1'] = 12345
>>> d['key2'] = value2
>>> print d['key1']
12345
>>> d.close()
Run Code Online (Sandbox Code Playgroud)

我也推荐Durus,但这需要你做一些额外的学习.它可以让你创建一个PersistentDictionary.从内存中,键可以是任何pickleable对象.