2013-02-23 6 views
1
list=[[1,2],[4,5],[3,4],[4,3],[2,1],[1,2]] 

Я хочу удалить повторяющиеся элементы, дублированные элементы могут быть отменены. Результат должен быть:Python: удалить повторяющиеся элементы из вложенного списка

list=[[1,2],[4,5],[3,4]] 

Как достичь этого в Python?

+0

Имеет значение вопрос? – Volatility

+0

-1: воздерживаться от переименования переменных во встроенные модули – Abhijit

+0

@ Волатильность, не имеет значения. – Sanjivani

ответ

2

Если заказ вопросы вы всегда можете использовать OrderedDict

>>> unq_lst = OrderedDict() 
>>> for e in lst: 
    unq_lst.setdefault(frozenset(e),[]).append(e) 


>>> map(list, unq_lst.keys()) 
[[1, 2], [4, 5], [3, 4]] 
7
lst=[[1,2],[4,5],[3,4],[4,3],[2,1],[1,2]] 
fset = set(frozenset(x) for x in lst) 
lst = [list(x) for x in fset] 

Это не будет сохранять заказ из вашего первоначального списка и не будет сохранять порядок ваших подсписок.

>>> lst=[[1,2],[4,5],[3,4],[4,3],[2,1],[1,2]] 
>>> fset = set(frozenset(x) for x in lst) 
>>> lst = [list(x) for x in fset] 
>>> lst 
[[1, 2], [3, 4], [4, 5]] 
0

Другим способ, без использования OrderedDict, frozenset, set и map.

lst = [[1, 2], [4, 5], [3, 4], [4, 3], [2, 1], [1, 2]] 

unique = [] 
for item in lst: 
    if sorted(item) not in unique: 
     unique.append(sorted(item)) 

print(unique) 

[[1, 2], [4, 5], [3, 4]] 
Смежные вопросы