Нет способа сделать это. Дикты сейчас сохраняют порядок, но только сохраняют - они не предназначены для поддержки сложных операций манипулирования порядком.
Изменение реализации диктов, которое приводит к диктовкам, сохраняющим порядок, в основном очень ограничено в способах манипулирования порядком он может поддерживать. Таблица dict ha sh хранит индексы в плотном массиве записей, и именно этот массив поддерживает порядок элементов dict.
Плотный массив не может быть произвольно переупорядочен без аннулирования таблицы ha sh. Даже удаление записи должно быть реализовано как оставление фиктивного маркера на его месте для целей разрешения коллизий, и это место записи не может быть повторно использовано без полной перестройки таблицы ha sh.
Даже если бы вам пришлось попробуйте выполнить какую-то неэффективную ручную сортировку, удаляя и заменяя записи, вы накапливаете фиктивные данные и запускаете перестроение таблицы ha sh, потребляя дополнительную память, которую вы не хотели использовать. Вот простая демонстрация:
import os
os.system(f'grep VmPeak /proc/{os.getpid()}/status')
x = dict.fromkeys(range(2**16))
os.system(f'grep VmPeak /proc/{os.getpid()}/status')
for i in range(2**16):
if i == 21845:
os.system(f'grep VmPeak /proc/{os.getpid()}/status')
k = next(iter(x))
x[k] = x.pop(k)
if i == 21845:
os.system(f'grep VmPeak /proc/{os.getpid()}/status')
os.system(f'grep VmPeak /proc/{os.getpid()}/status')
Вывод:
VmPeak: 15092 kB
VmPeak: 20224 kB
VmPeak: 20224 kB
VmPeak: 24832 kB
VmPeak: 24832 kB
Вместо фактической сортировки (которая потребляет дополнительную память или требует много дополнительного времени), мы используйте уже отсортированный dict и несколько раз извлекайте первый ключ в порядке и помещайте его в конец порядка, соответствуя шаблону доступа, который будет выполнять сортировка с удалением и заменой для сортировки этого dict. Когда мы достигаем порогового значения для перестроения dict, пиковое использование памяти сразу же подскакивает из-за необходимости выделить вторую копию внутренних структур данных dict.