【发布时间】:2018-10-31 23:02:28
【问题描述】:
我正在尝试从一个包含 2.5 亿个 4.4 GB 项目的大型文本文件中删除重复项目。
看到我可以使用以下代码在短短几分钟内将此文件加载到 python 列表中,这让我印象深刻:
x = []
with open("online.txt") as file:
for l in file:
x.append(l)
print('count of array: ')
print(len(x))
但是,当我尝试简单地检查以确保在将下一个项目添加到数组之前不存在时,它需要很多小时才能完成。我觉得我错过了一些可以真正加快速度的简单方法。
这是我用来检查重复项目的代码:
a = []
x = []
with open("online.txt") as file:
for l in file:
if l in a:
print('duplicate')
print(l)
else:
x.append(l.strip())
a.append(l)
print('with duplicates: ');
print(len(a))
print('without duplicates: ')
print(len(x))
这是在具有 64 Gigs 内存和现代双至强处理器的服务器上运行的。
【问题讨论】:
-
使用列表会很慢!也许尝试将
a设为set()?
标签: python python-3.x duplicates bigdata