Почему порядок элементов в наборе отличается в py2 и py3?

#python #set

Вопрос:

В py2:

 {1: {“1”, “2”, “7”, “3”, “4”, “9”, “8”}}  

Возвращается для всех запусков {1: set([‘1’, ‘3’, ‘2’, ‘4’, ‘7’, ‘9’, ‘8’])}

В py3:

 {1: {“1”, “2”, “7”, “3”, “4”, “9”, “8”}}  

Возвращается при первом запуске {1: {“1”, “3”, “4”, “7”, “8”, “2”, “9”}}

Возврат для второго запуска {1: {“2”, “4”, “9”, “7”, “1”, “3”, “8”}} Порядок элементов в inside dict продолжает меняться.

Мой главный вопрос заключается в том, почему он продолжает меняться с каждым запуском и как его решить, чтобы получить стабильный результат, как в py2?

Комментарии:

1. Это набор, а наборы не имеют надежного порядка. Как это решить? Используя вместо этого список.

2. @luk2302: Диктанты теперь упорядочены, но не наборы.

3. @Mahrkeenerh Microsoft visual studio

Ответ №1:

Используйте другую структуру (например, список или диктант (начиная с Python 3.7)/OrderedDict) — наборы по своей сути не имеют понятия порядка.