Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find unique list of tuples irrespective of order inside tuple

Given input:

[('is','my','order'), ('my','order', 'is'), ('temp', 'ques'), ('ques','temp')]

Desired output:

[('is','my','order'), ('temp', 'ques')]

In the output, the order of the tuple or the order of the contents of tuple doesn't matter.

like image 912
anik jha Avatar asked Oct 28 '25 08:10

anik jha


1 Answers

Because for you order doesn't matter, you can use set to achieve this:

>>> input_list = [('is','my','order'), ('my','order', 'is'), ('temp', 'ques'), ('ques','temp')]

>>> set(tuple(sorted(l)) for l in input_list)
set([('ques', 'temp'), ('is', 'my', 'order')])

Firstly sort the content of each nested tuple to ensure your set considers tuples with common items as same. Then I am type-casting it again to tuple because sorted returns list which are unhashable. Finally, set removes duplicate entries of your tuples.

Please refer "set" documentation for more details.

like image 52
Moinuddin Quadri Avatar answered Oct 29 '25 21:10

Moinuddin Quadri