2017-10-18 4 views
2

Ich habe eine Liste von Listen, und ich möchte Duplikate entfernen. Die Listen sind ungeordnete Objekte und das System betrachtet sie als unterschiedlich. Für z.B.Entfernen Sie doppelte Listen aus einer Liste von Listen, Listen sind ungeordnete hashbare Objekte

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

Ich möchte das Endergebnis

b = [[1,2], [1,3], [3,4]] 

wobei das erste Auftreten beibehalten wird sein.

+1

Welche Sprache? Was hast du bisher versucht? – daniu

Antwort

0

Ich benutze Python, um dieses Problem zu lösen.

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

for i in a: 
    i.sort() # sort the inner list for [2,1] to [1,2] 

b = set(map(tuple,a)) # convert the list to tuple for hashable 
b = map(list,b) # covert again back to list 

print b 
+0

Wenn Sie eine Liste von '[[2, 1], [2,1]] haben, werden Sie mit einem Endergebnis von' [[1, 2]] enden, was nicht sein wird alles was tatsächlich in der Eingabeliste war ... –

+0

ja dann muss man logisch damit umgehen wie wenn len (a)> 1 dann b ausführen und drucken. Danke –

+0

anstatt die inneren Listen zu sortieren, warum nicht einfach 'set (map (set, a))' (sie sind schließlich _unordered_). – avigil

Verwandte Themen