2014-10-17 4 views
0

Я не понимаю порядок, который применяет Python из удерживающих наборов. Например:python порядок элементов в наборе

visited = set() 
visited.add('C') 
visited.add('A') 
visited.add('B') 
print(set) 

Заказ 'A', 'C', 'B'. Почему «А» до «С» (возможно, в алфавитном порядке)? Что я должен сделать, чтобы сохранить добавочный заказ, т. Е. 'C', 'A', 'B'?

+0

https://docs.python.org/2/library/stdtypes.html#set-types-set-frozenset «Установленный объект представляет собой неупорядоченный набор отдельных хешируемых объектов». – fredtantini

+0

Возможно дублирование http://stackoverflow.com/questions/1653970/does-python-have-an-ordered-set – Kasramvd

+0

Набор представляет собой неупорядоченную коллекцию. –

ответ

1

Вы не можете иметь порядок в наборах. и нет способа рассказать, как его заказывает Python. Проверьте this ответ на альтернативы.

+0

Будет ли 'frozenset()' работать? –

1

Наборы отличаются от списков. Если вы хотите сохранить заказ, используйте список. Например:

a = [] 
a.append('C') 
a.append('A') 
a.append('B') 
print a # ['C', 'A', 'B'] 
+0

Но теперь вы можете поместить один элемент в список дважды (что невозможно в наборах) –