Python:对字符串执行模数

时间:2015-07-20 12:02:59

标签: python string hash modulo ord

我有几十亿字符串格式为word0.word1.word2,我希望对这些字符串执行模数,以便我可以将每个字符串提供给数据库编写器进行存储。我知道我可以在字符串的第一个字符上执行一个模10的形式,如下所示:

CouponID

这不会平均分配我的字符串,因为word0,word1和word2按字母顺序排序,字符串的第一个字符经常是#34; a"。我可以取字符串的最后一个字母,但我不确定它们是否正常分发。

我的问题:是否有快速的方法来执行类似" ord"在整个字符串?我最终计划在字符串的整数表示上运行模48,并希望模块化输出均匀分布在所有48个核心上。我会很感激别人可以提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

s = "whatever"  # have a string
h = hash(s)     # obtain its hash
bin = h % 48    # find the bin

更新:Python的内置hash函数仅为单个进程提供确定性值。如果要将此信息(直接或间接)保存在数据库中,则必须使用不包含任何随机数据的显式散列函数。 (归功于@Alik)