[EMAIL PROTECTED]
I have many set objects some of which can contain same group of object while others can be subset of the other. Given a list of sets, I need to get a list of unique sets such that non of the set is an subset of another or contain exactly the same members.
Tried to do the following: s1=set(['a','b','c']) s2=set(['a','c']) s3=set(['a','d','e','f']) s4=set(['r','k','l']) s5=set(['r','k','l']) L=[s1,s2,s3,s4,s5] ----------------------- > cleaned-up list should contain s1, s3, s5
This should do the trick:
result = [] for s1 in L: for s2 in result: if s1 <= s2: break else: result.append(s1)
print result
If I understand the original post correctly, you also need to check for an existing set being a subset of the set you are adding. A better test case is
s1=set(['a','b','c'])
s2=set(['a','c'])
s3=set(['a','d','e','f'])
s4=set(['r','k','l'])
s5=set(['r','k','l'])
s6=set(['g', 'h'])
s7=set(['h', 'i'])
s8=set(['g', 'h', 'i'])
L=[s1,s2,s3,s4,s5,s6,s7,s8] # ----------------------- > cleaned-up list should contain s1, s3, s5, s8
which both Raymond and STeVe's proposals fail.
Kent -- http://mail.python.org/mailman/listinfo/python-list