【发布时间】:2011-05-17 21:01:22
【问题描述】:
考虑 x/y 坐标列表和字节“计数”。 x/y 的范围可能是 0 到 5000,即 2500 万个单元格。
但是数据将非常稀疏,最多有几千个条目,并且大多数坐标的条目为零。
偶尔会查找/添加该结构(例如,如果 x=5 和 y=10 中存在某些内容,则 ++)但更频繁地转换为 x/y/count 列表(排序并不重要)
用于查找的最快数据结构显然是 2d 数组,但您正在查看 24 MB 左右的内存,并且输出列表的迭代可能很昂贵。对于磁盘存储,您可以实现 gif 样式压缩,其中 0 字节后跟另一个字节表示 x 个空单元格,其他任何内容都是单元格值 - 但这无助于内存情况。
字典的字典可能会在查找/迭代速度和内存使用之间取得很好的平衡。
是否有任何其他合适的数据结构我应该考虑(内置于 Python、现有库或更通用的数据结构?
【问题讨论】:
-
请注意,在发布到 SO 之前,请完成阅读您已经打开的所有选项卡...仅此而已 ;)