Lista única de Python usando set

Posible duplicado:
¿Cómo se eliminan los duplicados de una lista en Python mientras se conserva el orden?

Lo que estoy tratando de hacer es escribir un método que tome una lista como argumento y use un conjunto para devolver una copia de la lista donde cada elemento solo aparezca una vez, así como que los elementos de la nueva lista aparezcan en el orden de sus elementos. Primera aparición en la lista original. TENGO que usar un conjunto para esto, sin embargo, no puedo hacerlo para que la salida esté en el orden correcto y tenga un resultado rápido. Si pongo algo como esto:

def unique(a): return list(set(a)) 

y aprobó una lista con millones de elementos, me daría un resultado rápidamente, pero no se ordenaría. Así que lo que tengo ahora es esto:

 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 

Esto me da el resultado que quiero, pero no lo suficientemente rápido. Si paso una lista con un millón de elementos, podría estar esperando media hora, mientras que el forro que lleva allí toma menos de un segundo. ¿Cómo podría resolver este problema?

 >>> from collections import OrderedDict >>> items = [1, 2, 3, 'a', 2, 4, 'a'] >>> OrderedDict.fromkeys(items).keys() [1, 2, 3, 'a', 4]