Не вдаваясь в подрабности алгоритма, функция compress возвращает массив кортежей длины 2:
. Этот массив и нужно сохранить в файл. Это можно сделать по-разному. Например, воспользоваться pickle.dumps для формирования последовательности байт для сохранения в файл и для обратного преоразования использовать pickle.loads.
import pickle
# compress & decompress declarations ...
compressed = [(0, 'a'), (1, 'b'), ....]
tofile=pickle.dumps(compressed)
with open('outfile.dat', 'w') as f:
f.write(tofile)
# reading:
with open('outfile.dat','r') as f:
compressed_loaded = pickle.loads(f.read())
decompress(compressed_loaded)