Tim*_*ong 5 python string comparison string-comparison python-3.x
情况:将 fileA 中的字符串与 fileB 中的预定义字符串进行比较。我的代码中所述函数的示例:
string = open('fileA', 'r')
stringlist = open('fileB', 'r')
//compare the strings
for i in string:
for j in stringlist:
if i == j:
print("Same String found!" + i + " " + j)
Run Code Online (Sandbox Code Playgroud)
问题:在我的实际程序中,string包含超过200个字符串,而stringlist是一个包含超过50,000个字符串的文件。正如我所读到的,嵌套 for 循环作为比较函数很慢。
问题:比较两个文件内容的最快方法是什么?
附加信息 1:这两个文件都是 CSV 文件,并在我的程序中以 CSV 分隔的形式打开。
附加信息 2:字符串是 md5 哈希值(32 个字符)。
附加信息 3:我愿意接受其他存储字符串的方法,即即时比较字符串,而不是将其保存到 fileA。
附加信息 4:我也愿意接受我可以使用的其他方法或模块(即:线程/并行处理)——速度是这里的关键。
你应该使用集合:
setA = set(listA)
setB = set(listB)
common = setA.intersection(setB)
Run Code Online (Sandbox Code Playgroud)
common现在保存两个列表中存在的所有字符串
您也可以使用单行代码来完成此操作:
common = set(listA).intersection(set(listB))
Run Code Online (Sandbox Code Playgroud)
如果您可以“即时”进行此比较,那么它当然比将列表保存到文件中然后再次从该文件中读取更好更快,但这样做您不会获得任何好处。
当然,要打印副本:
for x in common:
print(x)
Run Code Online (Sandbox Code Playgroud)