В суть кода на Pascal даже вникать не требуется - и невооружённым глазом видно, что это лютый говнокодище. Уже одно магическое число 1000 много о чём говорит. В чём проблема написать программу? Алгоритм не просто элементарный, он примитивный. Подумайте и напишите хотя бы псевдокод.
Евгений, производительность тут важна, но в данном случае яхочу сказать о другом. Есть pythonic-паттерны, и есть плохой код. Нет ничего сложного сразу написать ''.join(s1, s2, s3, s4). Для этого просто надо знать язык.
Куча сторонних библиотек - это не недостаток, это преимущество
Если посмотреть в исходники библиотек, можно найти огромное количество говнокода. Например, в том же aiohttp конкатенация строк осуществляется в виде "s1" + "s2" + "s3" +"s4" (четыре строки через плюс) вместо ''.join(), что никак не способствует быстродействию.
Сергей Соколов, ну да, можно исследовать производные. Я привёл пример решения численным методом, какое, очевидно, и запрашивал автор. Так-то задачу вообще не надо решать - ответ очевиден.
AlexandrBirukov, сомнительный прирост скорости в ущерб читаемости. Золотое правило - не надо ничего оптимизировать, не проведя профилирование программы. Бутылочное горлышко может оказаться вовсе не здесь. Да и требования по скорости могут быть не актуальны.
Віктор Короп, на такой случай у dict() предусмотрены специальные методы: dic.setdefault('key', []).append('value')
А ещё лучше - использовать collections.defaultdict.
Если у вас файлы называются по-другому - поправьте..