Питон, множества и метод set()

s = ['a', 'n', 'o', 't']
d = set(s)
print(d)

Вот код, вопрос состоит в том, как сделать так, чтобы в переменной d сохранялся исходный порядок элементов списка s.


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

Автор решения: Qwertiy

Начиная с питона 3.7 словари гарантированно упорядочены в порядке добавления элементов. Но сетов это изменение не коснулось. Так что если эта упорядоченность нужна, то можно попробовать вместо сета использовать словарь: tio.run

s = ['a', 'n', 'o', 't']
d = dict.fromkeys(s)
print(d)

Впрочем, у меня есть ощущение, что в питоне сет предоставляет довольно много возможностей, которых нет у словаря. Если нужен именно сет, то никак. Если питон старше чем 3.7 - тоже никак. Только искать кастомные коллекции.

→ Ссылка
Автор решения: Иван Долгий

Начиная с версии Python 3.7, словари стали упорядоченными. Множества это не коснулось. (Источник)

В своих проектах для этих целей использовал модуль ordered-set. Думаю, это то, что тебе нужно.

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

Если задача в том что бы убрать повторяющиеся значения то можно сделать вот так:

s = ['a', 'n', 'o', 't', 't']
res = list(dict.fromkeys(s))

print(res)
-- ['a', 'n', 'o', 't']
→ Ссылка