我想为字典创建以下结构:
{ id1: {id2: {id3: [] }}}
这将是一个三重字典,最终将指向一个列表。
我使用以下代码在Python中启动它:
for i in range(2160):
for j in range(2160):
for k in range(2160):
subnetwork.update({i: {j: {k: [] }}})
此代码执行时间过长。它具有Big-O(N ^ 3)复杂度。
有没有办法加快这个过程?序列化可能是数据结构并从硬盘驱动器中检索它更快?
哪些数据结构可以达到类似的效果?使用三元素元组作为键的扁平字典是否符合我的目的?
答案 0 :(得分:2)
在这个结构中你真的需要100亿个条目(2,160 ** 3 == 10,077,696,000)吗?任何基于磁盘的解决方案都不可能比基于内存的解决方案更快,但同时您的程序可能会超出实际内存的范围,导致“页面抖动”发生。
在不了解您的预期应用的情况下,很难提出合适的解决方案。你想做什么?
例如,如果您不需要随机查找项目,则可以考虑使用三元素元组作为键的平面字典。但是既然你没有告诉使用你想要做什么,那么更多可能是高度推测的。