我有一个从一些散列键到位串的字典。位串可以是可变长度的,但通常小于 160 位,通常小于 80 位。我有大约 8000 万个键值对。
如何将这个数据结构存储在尽可能少的内存中?我不想填充位串,否则我会损失相当多的空间(没有双关语意)。
我假设我必须在开头存储一个字节,给出位串的长度。没关系。
将此字典存储在内存中最节省内存的方法是什么?
我更愿意使用 Python,但对其他选择持开放态度。
请您参考如下方法:
如果您指的是将位串填充为整数字节,那么您可以将所有初始位串的串联存储在单个位串中,并保留一个字典,其值是 (位位置、长度).
问题是,如果我算对了,那么这个更大的位串的长度可以超过 120 亿位,所以 bit position 需要比 多几位整数。然后,如果您需要自己填充位位置,我们回到原点。
但是,如果不同长度的数量小于 64,则可以将长度字段放入 6 位,并且最终得到一个将散列键映射到索引到单个位串的 5 字节元组的字典。这对你有用吗?
