Python:是否有使用多个键的优化字典类型(类似于数据库)?

标签 python performance optimization python-2.7 dictionary

即允许您像在数据库中一样高效地访问和更新数据。

我的具体情况如下:

我有一个非常大的蒙特卡洛模拟+优化,数据被分类到几个字典中,每个字典有 600k+ 元组键,格式如下:

simple_dictionary[(year, month, day, hour, minute)] = value_or_small_list_or_small_numpy_array

事实证明,上面的代码实际上比嵌套字典稍慢:

simple_dictionary[year][month][day][hour][minute] = value_or_small_list_or_small_numpy_array

这让我相信 - 如果我错了,请纠正我 - 后一种格式检查的键比前一种少。这个假设是基于我的代码(代码太长,无法发布)。我的代码不会在 __init__ 之后创建新键,但每次迭代至少调用每个键/值对一次。但是,并非所有值都会更新。

假设这可以/应该从 RAM 运行,是否有比上述代码更高效的替代方案?

最佳答案

您是否考虑过尝试内存中 sqlite3数据库?这将是您所能得到的“类似于数据库”,并且全部都在内存中。 :)

使用连接字符串 :memory: 为您提供内存数据库。

关于Python:是否有使用多个键的优化字典类型(类似于数据库)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13690214/

相关文章:

python - 将日志记录 "print"函数更改为 "tqdm.write",以便日志记录不会干扰进度条

linux - 如何计算进程 id 的执行指令数,包括子进程

c# - 如何检查 C# 中的性能计数器?

javascript - 优化 jquery mobile 和 javascript

c++ - 帮助优化此索引到行列,反之亦然算法

c - GCC 会内联一个接受指针的函数吗?

python - 关闭 Flask SocketIO 服务器

python - 如何用日期时间字符串减去 datetime.now 对象?

python - 什么是 python 中的 _curried 方法以及它们是如何生成的?

.net - HashSet<T>.Contains 如何比 List<T>.Contains 快?