Python

2012-05-28 2 views
5

Mögliche Duplizieren in einer Zeile mit unhashable Elemente Duplikate der Liste eliminieren:
Python: removing duplicates from a list of listsPython

sagen, dass ich Liste

a=[1,2,1,2,1,3] 

haben Wenn alle Elemente in einem hashable sind (wie in diesem Fall), würde dies die Aufgabe erfüllen:

list(set(a)) 

Aber was, wenn

a=[[1,2],[1,2],[1,3]] 

?

+1

Diese könnten Sie in Tupel verwandeln, bevor Sie das Set hinzufügen. – MattH

+1

mögliches Duplikat von [Python: Entfernen von Duplikaten aus einer Liste von Listen] (http://stackoverflow.com/questions/2213923/python-removing-duplicates-from-a-list-of-lists) http: // stackoverflow. com/questions/480214/how-do-you-remove-Duplikate-von-einer-Liste-in-Python-while-Erhaltung-Reihenfolge http://stackoverflow.com/questions/479897/how-do-you-remove -duplicates-from-a-list-in-python – jamylak

+0

Nur realisiert, dass dies ein Duplikat von vielen anderen Fragen ist, sollte es geschlossen werden. – jamylak

Antwort

10
>>> from itertools import groupby 
>>> a = [[1,2],[1,2],[1,3]] 
>>> [k for k,v in groupby(sorted(a))] 
[[1, 2], [1, 3]] 
0

Dieses Set Verständnis arbeitet für die Liste der Listen eine Menge von Tupeln zu produzieren:

>>> {(tuple(e)) for e in a} 
set([(1, 2), (1, 3)]) 

dann verwenden, sie in eine Liste von Listen ohne Duplikate wieder einzuschalten:

>>> [list(x) for x in {(tuple(e)) for e in a}] 
[[1, 2], [1, 3]]