À l'aide de python efficace pour calculer les distances de hamming

J'ai besoin de comparer un grand nombre de chaînes similaires à 50358c591cef4d76. J'ai une fonction de distance de Hamming (à l'aide de pHash) je peux utiliser. Comment puis-je le faire efficacement? Mon pseudo serait:

For each string
    currentstring= string
    For each string other than currentstring
        Calculate Hamming distance

J'aimerais en sortie les résultats comme une matrice et d'être en mesure de récupérer les valeurs. Je tiens également à l'exécuter via Hadoop en Streaming!

Tous les pointeurs sont reçues avec reconnaissance.

Voici ce que j'ai essayé, mais il est lent:

import glob
path = lotsdir + '*.*'
files = glob.glob(path)
files.sort()
setOfFiles = set(files)
print len(setOfFiles)
i=0
j=0
for fname in files:
    print 'fname',fname, 'setOfFiles', len(setOfFiles)
    oneLessSetOfFiles=setOfFiles
    oneLessSetOfFiles.remove(fname)
    i+=1

    for compareFile in oneLessSetOfFiles:
        j+=1
        hash1 = pHash.imagehash( fname )
        hash2 = pHash.imagehash( compareFile)
        print ...     
Si vous voulez comparer chaque chaîne avec chaque chaîne, vous aurez deux boucles imbriquées. Est-ce que vous voulez faire?

OriginalL'auteur schoon | 2014-07-04