我有一个从一些哈希键到一个位串的字典。比特串可以是可变长度的,但是通常小于160位,通常小于80。我有大约8000万个键值对。

如何将该数据结构存储在尽可能少的内存中?我不想填充位串,否则我将失去很多空间(无双关语)。

我假设我必须在开头存储一个字节,以提供位字符串的长度。没关系。

在存储器中存储该字典的最有效内存方式是什么?

我更喜欢使用Python,但可以接受其他选择。

最佳答案

如果您要指代将位串填充到整数个字节,则可以将所有初始位串的连接存储在单个位串中,并保留一个字典,其值的形式为(bit position, length)的元组。

问题是,如果我算术正确,那么这个较大的位串的长度可能超过120亿个位,因此bit positionint上将需要几个位。然后,如果您需要填充钻头位置本身,我们回到第一个平方。

但是,如果不同长度的数量小于64,则可以将长度字段设置为6位,最后得到一个字典,该字典将哈希键映射到索引到单个位串的5字节元组。这对您有用吗?

09-20 06:44