Ответ отрицательный, но начиная с Python 3.7, вы можете использовать simple dict из стандартной библиотеки Python, используя только ключи (и значения как None) для той же цели.
Вот пример того, как использовать dict в качестве упорядоченного набора для фильтрации повторяющихся элементов с сохранением порядка, тем самым эмулируя упорядоченный набор. Используйте dict метод класса fromkeys() для создания dict, затем просто запросите keys() ответ.
Для этого существует рецепт упорядоченного набора (возможная новая ссылка), на который есть ссылка в документации Python 2. Это работает на Py2.6 или новее и 3.0 или новее без каких-либо изменений. Интерфейс почти точно такой же, как у обычного набора, за исключением того, что инициализация должна выполняться с помощью списка.
OrderedSet([1, 2, 3])
Это изменяемый набор, поэтому сигнатура для .union не совпадает с сигнатурой set, но поскольку он включает __or__ что-то подобное, можно легко добавить:
@staticmethod defunion(*sets): union = OrderedSet() union.union(*sets) return union
defunion(self, *sets): forsetin sets: self |= set
Ответ 3
Обновление: Этот ответ устарел начиная с Python 3.7. Смотрите Ответ jrc выше для лучшего решения. Оставим этот ответ здесь только по историческим причинам.
Упорядоченный набор функционально является частным случаем упорядоченного словаря.
Ключи словаря уникальны. Таким образом, если пренебречь значениями в упорядоченном словаре (например, путем их присвоения None), то получится, по сути, упорядоченный набор.
Начиная с Python 3.1 и 2.7 есть collections.OrderedDict. Ниже приведен пример реализации упорядоченного набора. (Обратите внимание, что требуется определить или переопределить только несколько методов: collections.OrderedDict и collections.MutableSet выполняют тяжелую работу.)
Хотя другие указывали, что в Python (пока) нет встроенной реализации набора, сохраняющего порядок вставки, я чувствую, что на этот вопрос отсутствует ответ, в котором указано, что можно найти в PyPI.