python - 比较字符串 Python 的最快方法

标签 python string python-3.x comparison string-comparison

情况:将文件 A 中的字符串与文件 B 中的预定义字符串进行比较。我的代码中所述函数的示例:

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)

问题:在我的实际程序中,string包含200多个字符串,而stringlist是一个包含50000多个字符串的文件。正如我所读,嵌套的 for 循环作为比较函数很慢。

问题:比较两个文件内容的最快方法是什么?

附加信息 1:两个文件都是 CSV 文件,并且在我的程序中以 CSV 分隔格式打开。

附加信息 2:字符串是 md5 哈希值(32 个字符)。

附加信息 3:我对其他存储字符串的方式持开放态度,即即时比较字符串而不是将其保存到文件 A。

附加信息 4:我也对我可以使用的其他方法或模块持开放态度(即:线程/并行处理)——速度是这里的关键。

最佳答案

你应该使用 sets :

setA = set(listA)
setB = set(listB)
common = setA.intersection(setB)

common 现在包含两个列表中存在的所有字符串

您也可以使用单行代码执行此操作:

common = set(listA).intersection(set(listB))

如果您可以“即时”进行这种比较,这当然比将列表保存到文件中然后再次从该文件中读取更好更快,这样做您将一无所获。

当然,要打印副本:

for x in common:
    print(x)

关于python - 比较字符串 Python 的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44403502/

相关文章:

python - 将字符串右分成 3 组

python - 在 Python 中加载并随机打乱 8 GB 的 csv 数据

python - 多个相同的标签名称和 lxml.objectify

python - 如何根据另一列填充 nan 值

json - 解开 Json Swift(发现为零)

python - 仅使用 Pandas 转换某些行

python - 在 python 中解析 PCAP 文件

java - 如何在java中使用Ascii删除字符?

java - Java中如何分割字符串?

python - 使用 ckanapi 和 Python 使用资源创建 CKAN 包/数据集