在大字典中搜索重复值

2024-05-23 23:07:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在创建一个程序,它创建一个随机的15位字符串,并找到该字符串的SHA-1等价物

当我转换SHA-1字符串并将其缩短到前15位时,我希望在字典中找到任何重复的实例。如果有,它会告诉我它被分配到的随机字符串

你可以想象这需要很长时间。我知道有更有效的方法来实现这一点,比如二进制搜索、Pollard-Rho技术或循环查找,但我在用Python实现这一点时遇到了困难

这就是我目前所拥有的(Python):

for i in range (n):
    t=''.join([random.choice(alpha) for _ in range(15)])
    t=t.encode('utf-8')
    h=hashlib.sha1(t)
    h=(h.hexdigest()[0:15])
    if h in hashDict:
        print ("Duplicate found")
        sha1val=hashlib.sha1(hashDict[h])
        sha2val=hashlib.sha1(t)
        print (hashDict[h],":",sha1val.hexdigest())
        print (t,":",sha2val.hexdigest())
        break
    hashDict[h]=t

Tags: 实例字符串in程序for字典rangesha1