Я не могу придумать способ ускорить то, что у тебя есть.Быстро использовать set
для отслеживания вещей, и быстро использовать list
для хранения списка.
Мне нравится решение OrderedSet
, но я сомневаюсь в реализации Python OrderedSet
будет быстрее, чем вы написали.
Вы можете использовать OrderedDict
для решения этой проблемы.Но это было добавлено для Python 2.7.Вы можете использовать рецепт (например: http://code.activestate.com/recipes/576693/), чтобы добавить OrderedDict
, но, опять же, я не думаю, что это будет быстрее, чем у вас.
Я пытаюсь придуматьМодуль Python, который реализован на C для решения этой проблемы. Я думаю, что это единственная надежда побить ваш код. Но я ни о чем не думал.
Если вы можете избавиться от флага dups
,это будет быстрее, если будет меньше кода Python.
Интересный вопрос. Удачи.