Lista exclusiva do Python usando set [duplicate]

Duplicata Possível:
Como você remove duplicatas de uma lista em Python enquanto preserva a ordem?

O que estou tentando fazer é escrever um método que use uma lista como um argumento e use um conjunto para retornar uma cópia da lista na qual cada elemento só ocorre uma vez, assim como ter os elementos da nova lista ocorrendo na ordem de sua ordem. primeira ocorrência na lista original. Eu tenho que usar um conjunto para isso, no entanto, eu não posso fazê-lo de modo que a saída esteja na ordem correta, tendo um resultado rápido. Se eu colocar algo assim:

def unique(a):

return list(set(a))

e passou uma lista com milhões de elementos, isso me daria um resultado rapidamente, mas não seria ordenado. Então, o que eu tenho agora é isto:

def unique(a):
b = set(a)
c = {}
d = []
for i in b:
    c[a.index(i)] = i
for i in c:
    d.append(c[i])
return d

Isso me dá o resultado que quero, mas não rápido o suficiente. Se eu passar uma lista com um milhão de elementos, eu poderia estar esperando por meia hora, enquanto o forro lá em cima leva menos de um segundo. Como eu poderia resolver esse problema?

questionAnswers(1)

yourAnswerToTheQuestion