2012-05-28 2 views
5

Possible en double:
Python: removing duplicates from a list of listsPython éliminer les doublons de la liste avec des éléments unhashable dans une ligne

Dire que j'ai la liste

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

Si tous les éléments en sont hashable (comme dans ce cas), cela ferait l'affaire:

list(set(a)) 

Mais, si

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

?

+1

Vous pouvez les transformer en tuples avant de les ajouter à l'ensemble. – MattH

+1

duplication possible de [Python: suppression des doublons d'une liste de listes] (http://stackoverflow.com/questions/2213923/python-removing-duplicates-from-a-list-of-lists) http: // stackoverflow. com/questions/480214/how-do-you-supprimer-duplique-d'-une-liste-en-python-while-preserving-order http://stackoverflow.com/questions/479897/how-do-you-remove -duplicates-from-a-list-in-python – jamylak

+0

Je viens de réaliser qu'il s'agit d'un doublon de beaucoup d'autres questions, il devrait être fermé. – jamylak

Répondre

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

Cette compréhension ensemble fonctionne pour la liste des listes pour produire un ensemble de tuples:

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

Ensuite, utilisez que pour la transformer en une liste de listes à nouveau sans doublons:

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