我有 N 个字符串,我想将字典分成 M 个均匀大小的桶(+/- 1 个字符串)。此外,N>>M。
直接的方法是对所有字符串进行排序并将结果列表拆分为 M 个桶。
我想通过在完整列表可用之前将创建的每个字符串路由到存储桶来近似这一点。
是否有一种快速且 Pythonic 的方式将字符串分配给存储桶?我本质上是在寻找整数模运算符的字符串等效项。也许是保留字典顺序的哈希?这甚至可能吗?
我有 N 个字符串,我想将字典分成 M 个均匀大小的桶(+/- 1 个字符串)。此外,N>>M。
直接的方法是对所有字符串进行排序并将结果列表拆分为 M 个桶。
我想通过在完整列表可用之前将创建的每个字符串路由到存储桶来近似这一点。
是否有一种快速且 Pythonic 的方式将字符串分配给存储桶?我本质上是在寻找整数模运算符的字符串等效项。也许是保留字典顺序的哈希?这甚至可能吗?
您可以按字符串的前两个字符或类似的东西进行排序。
比方说M=100
,所以你应该将字符划分为sqrt(M)
区域,每个区域都应该指向另一个sqrt(M)
区域,然后对于你得到的每个字符串,你可以比较第一个字符来决定将字符串指向哪个区域,然后再针对第二个字符,就像一棵树,桶作为叶子,比较作为节点。
根据定义,哈希不保留任何顺序。
而且我认为没有任何pythonic方法可以做到这一点。
您可以只创建字典(基本上是散列函数)并继续为每个循环样式添加一个字符串,但它不会保留任何顺序。