В Python есть словарь, который умеет менять порядок элементов без пересоздания - OrderedDict из collections.
Например, move_to_end() перемещает ключ в конец:
from collections import OrderedDict
data = OrderedDict([
("python", 1),
("django", 2),
("fastapi", 3),
])
data.move_to_end("python")
print(data)
# django, fastapi, python
А с last=False ключ можно отправить в начало:
data.move_to_end("fastapi", last=False)
Обычные dict тоже сохраняют порядок вставки, но OrderedDict полезен, когда порядок нужно активно менять: для LRU-кэшей, очередей, приоритетов и истории действий.
Например, move_to_end() перемещает ключ в конец:
from collections import OrderedDict
data = OrderedDict([
("python", 1),
("django", 2),
("fastapi", 3),
])
data.move_to_end("python")
print(data)
# django, fastapi, python
А с last=False ключ можно отправить в начало:
data.move_to_end("fastapi", last=False)
Обычные dict тоже сохраняют порядок вставки, но OrderedDict полезен, когда порядок нужно активно менять: для LRU-кэшей, очередей, приоритетов и истории действий.
👍3❤1🔥1