stackoverflow.com/questions/9792664/set-changes-element-order
от вопрос уже есть ответ здесь:
Согласованность порядка разбора Dict / Set 1 ответКто-то спросилВот почему при сдаче1
а такжеTrue
вset
только1
хранится.
Это конечно потому что1==True
, Но в каких случаях1
хранится и в каких случаяхTrue
хранится?
Давайте посмотрим:
прохождениеlist
построитьset
вместо использованияset
обозначения:
>>> set([True,1])
{True}
>>> set([1,True])
{1}
кажется логичнымset
повторяется во внутреннем списке и не добавляет второй элемент, поскольку он равен первому элементу (обратите внимание, чтоset([True,1])
не можешь Уступать1
, потому чтоset
не могу знать, что внутри списка. Это может даже не бытьlist
ноитерируемый)
Сейчас используюset
обозначения:
>>> {True,1}
{1}
>>> {1,True}
{True}
Похоже, что в этом случае список элементов обрабатывается в обратном порядке (проверено на Python 2.7 и Python 3.4).
Но гарантировано ли это? Или просто деталь реализации?