У меня есть два больших файла. Их содержимое выглядит так:
134430513
125296589
151963957
125296589
Файл содержит несортированный список идентификаторов. Некоторые идентификаторы могут появиться более одного раза в одном файле.
Теперь я хочу найти пересечение часть двух файлов. Это идентификаторы отображаются в обоих файлах.
Я просто прочитал два файла на 2 набора, S1
и S2
. И получить пересечение со S1. Internersection (S2)
. Но это потребляет много памяти и кажется медленно.
Так есть ли лучший или пифитонический способ сделать это? Если файл содержит так много идентификаторов, которые нельзя прочитать в SET
с ограниченной памятью, что я могу сделать?
Редактировать: я прочитал файл на 2 набора, используя генератор:
def id_gen(path):
for line in open(path):
tmp = line.split()
yield int(tmp[0])
c1 = id_gen(path)
s1 = set(c1)
все идентификаторов числовых. И MAX ID может быть 5000000000. Если использовать BitArray, он потребляет больше памяти.