Есть ли нумерация элементов в множествах (наборах) и как обратиться к определенному элементу множества?

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

p.s. Может кому-нибудь будет полезно: Заметил, что в 3.x.x версии, если во множестве только переменные типа int, то их всегда выводит упорядоченно от наименьшего до наибольшего.


Ответы (4 шт):

Автор решения: Alexey Leshchenko
>>> s = {1, 2, 3}
>>> print (s)
{1, 2, 3}
>>> print (s[0])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object is not subscriptable
>>> 

Если нужен упорядоченный список, то нужно брать tuple или list.

→ Ссылка
Автор решения: NEWME0

Если совсем коротко, то на прямую, никак.

Выход: создать из множества список.

a = set('this is my set')   # {'i', 'm', 'e', 'h', 't', 'y', 's', ' '}
a[0]                        # TypeError: 'set' object is not subscriptable

b = list(a)                 # ['i', 'm', 'e', 'h', 't', 'y', 's', ' ']
b[0]                        # i
→ Ссылка
Автор решения: dIm0n

Для упорядоченного множества есть специальный модуль:

from ordered_set import OrderedSet

print(set('abracadabra'))
print(set([5, 5, 4, 6, 7]))

print(OrderedSet('abracadabra'))
print(OrderedSet([5, 5, 4, 6, 7]))

Вывод:

{'b', 'c', 'r', 'a', 'd'}

{4, 5, 6, 7}

OrderedSet(['a', 'b', 'r', 'c', 'd'])

OrderedSet([5, 4, 6, 7])

→ Ссылка
Автор решения: MarianD

Множество как математический термин по определению неупорядоченно, например:

{1, 2} == {2, 1}

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

Значит, когда вы хотите прямой доступ к элементу (например для его позиции в структуре), нужно использовать другие структуры, например список, упорядоченное множество (ordered_set) или словарь, как вам уже посоветовали в других ответах.

→ Ссылка