[EMAIL PROTECTED] wrote:
Hi,
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

py> s1 = set(['a','b','c']) py> s2 = set(['a','c']) py> s3 = set(['a','d','e','f']) py> s4 = set(['r','k','l']) py> s5 = set(['r','k','l']) py> lst = [s1, s2, s3, s4, s5] py> uniqlst = [] py> for lstset in lst: ... for uniqlstset in uniqlst: ... if lstset.issubset(uniqlstset): ... break ... else: ... uniqlst.append(lstset) ... py> uniqlst [set(['a', 'c', 'b']), set(['a', 'e', 'd', 'f']), set(['k', 'r', 'l'])]

Not horribly efficient, mind you.  But I believe it's correct.

I basically took your description "Given a list of sets, I need to get a list of unique sets such that non[e] of the set[s] is an subset of another" and translated that to code. So I iterate through each element in lst, and and only add that element to uniqlst if it's not a subset of any of the items already in uniqlst.

STeVe
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to