питон: как отключить автоматическую сортировку при создании словаря

Мне нужна помощь в этом случае:

m={}
m[1]=1
m[333]=333
m[2]=2

# Result:
{1: 1, 2: 2, 333: 333}

поэтому, даже когда я не ввел " 333 "последний, я получил этот "333", указанный в конце словаря, когда распечатал его. почему этот "словарь" выполняет автоматическую сортировку? и как его отключить? я могу creata функцию пересортировать, чтобы исправить заказ. но это не то, что я хочу, я просто хочу распечатать и получить порядок вывода, Как и порядок ввода данных. Есть ли хорошее объяснение и есть ли решение ?

2 ответов


это не сортировка. dict не упорядочен вообще, поэтому вы никак не можете повлиять на порядок ключей. Есть collections.OrderedDict в 2.7 и 3.1+, там тоже автономный модуль для 2.4-2.6.


элементы, хранящиеся в словаре, не имеют никакого внутреннего порядка. Порядок их распечатки полностью зависит от хэш-значений для каждого из ключей и других элементов в словаре.