我有一个小脚本,它根据 CSV 输入文件比较第一个列表中有多少项在第二个列表中。但是在引用较多的情况下,运行需要一定的时间。
data_1 = import_csv("test1.csv")
print(len(data_1))
data_2 = import_csv("test2.csv")
print(len(data_2))
data_to_keep = len([i for i in data_1 if i in data_2])
我刚刚运行了一个测试,第一个列表包含 598756 个项目,第二个列表包含 76612 个项目,脚本尚未完成。
由于我对 Python 还是比较陌生,所以我想知道是否有最快的方法来实现我想要做的事情。感谢您的帮助:)
编辑:导入 CSV 看起来像这样:
def import_csv(csvfilename):
data = []
with open(csvfilename, "r", encoding="utf-8", errors="ignore") as scraped:
reader = csv.reader(scraped, delimiter=',')
for row in reader:
if row: # avoid blank lines
data.append(row[0])
return data
请您参考如下方法:
将 data_2 设为一个集合。
data_2 = set(import_csv("test2.csv"))
在 Python 中,集合可以更快地检查对象是否存在(使用 in 运算符)。
您可能还会看到切换输入顺序的一些改进。将较大的文件设为集合,这样当您遍历较小文件的元素时,您可以减少查找次数。
