Порядок итераций меняется от запуска к запуску

Почему порядок итераций набора Python (с одинаковым содержимым) меняется от запуска к запуску, и каковы мои варианты обеспечения согласованности от цикла к запуску?

Я понимаю, что порядок итераций для набора Python произвольный. Если я помещаю «a», «b» и «c» в набор, а затем повторяю их, они могут возвращаться в любом порядке.

Я заметил, что порядок остается неизменным в прогоне программы. То есть, если моя программа повторяет один и тот же набор дважды подряд, я получаю один и тот же порядок оба раза. Однако, если я запускаю программу два раза подряд, порядок меняется от запуска к запуску.

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

Лучшее решение, которое я придумал, это:

  1. Скопируйте набор в список.
  2. Применить произвольную сортировку к списку.
  3. Перебрать список вместо набора.

Есть ли более простое решение?

Примечание: я нашел похожие вопросы на StackOverlow, но ни один из них не касался этого конкретная проблема получения одинаковых результатов от цикла к запуску.

20
задан martineau 5 December 2017 в 17:11
поделиться