我需要比较类似于50358c591cef4d76的大量字符串。我可以使用海明距离功能(使用pHash)。我如何有效地做到这一点?我的伪代码将是:高效地使用python来计算海明距离
For each string
currentstring= string
For each string other than currentstring
Calculate Hamming distance
我想输出结果作为矩阵,并能够检索值。我也想通过Hadoop Streaming来运行它!
任何指针感激地收到。
这是我已经试过,但它是缓慢:
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 ...
如果你想比较每个字符串与每个字符串,你将有两个嵌套循环。那是你想要做的吗? –