unique – Python: Uniqueness for list of lists

unique – Python: Uniqueness for list of lists

You can use a set:

unique_data = [list(x) for x in set(tuple(x) for x in testdata)]

You can also see this page which benchmarks a variety of methods that either preserve or dont preserve order.

I tried @Marks answer and got an error. Converting the list and each elements into a tuple made it work. Not sure if this the best way though.

list(map(list, set(map(lambda i: tuple(i), testdata))))

Of course the same thing can be expressed using a list comprehension instead.

[list(i) for i in set(tuple(i) for i in testdata)]

I am using Python 2.6.2.

Update

@Mark has since changed his answer. His current answer uses tuples and will work. So will mine 🙂

Update 2

Thanks to @Mark. I have changed my answer to return a list of lists rather than a list of tuples.

unique – Python: Uniqueness for list of lists

import sets
testdata =[ [9034968, ETH], [14160113, ETH], [9034968, ETH], [11111, NOT], [9555269, NOT], [15724032, ETH], [15481740, ETH], [15481757, ETH], [15481724, ETH], [10307528, ETH], [15481757, ETH], [15481724, ETH], [15481740, ETH], [15379365, ETH], [11111, NOT], [9555269, NOT], [15379365, ETH]]
conacatData = [x[0] + x[1] for x in testdata]
print conacatData
uniqueSet = sets.Set(conacatData)
uniqueList = [ [t[0:-3], t[-3:]] for t in uniqueSet]
print uniqueList

Leave a Reply

Your email address will not be published.