Я только что проверил ваш код на python2 и python3
python3 output
0,1,2,3,4
python2
0,1,2,3,4,5,6,7
В голову приходит одна вещь, которая может продолжаться. Либо в вашем словаре выделяется только определенный объем памяти, когда вы создаете первое значение ключа, а когда вы удаляете значение ключа, мы не выделяем память или не освобождаем память, которую вы просто удаляете. Как только вся выделенная память используется, она выходит. Потому что, если вы запустите без этого del, вы получите эту ошибку
RuntimeError: dictionary changed size during iteration
Таким образом, python создает достаточно памяти для этого ключевого значения и еще несколько, и после того, как он израсходован, больше нет памяти, выделенной для вашего словаря.