On Thu, 17 Mar 2005 23:56:46 GMT, "Raymond Hettinger" <[EMAIL PROTECTED]> wrote:
> >"Kent Johnson" <[EMAIL PROTECTED]> wrote in message >news:[EMAIL PROTECTED] >> Raymond Hettinger wrote: >> > [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 > >Try this: > >result = [] >seen = set() >for s1 in L: > for s2 in L: > if s1 < s2: > break > else: > if s1 not in seen: > result.append(s1) > seen.add(frozenset(s1)) >print result > Actually, ISTM there are more than one set of sets that can be drawn from the original set that internally satisfy the criteria of no internal duplicates or subsets. E.g., here are some lists of sets selected from L above. I believe (unless I goofed) the requirement """ >> >>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. """ is satisfied internally within each list below. [set(['h', 'g']), set(['i', 'h'])] [set(['a', 'c', 'b']), set(['a', 'e', 'd', 'f'])] [set(['k', 'r', 'l']), set(['a', 'c', 'b']), set(['a', 'e', 'd', 'f']), set(['h', 'g'])] [set(['a', 'e', 'd', 'f']), set(['a', 'c']), set(['h', 'g']), set(['i', 'h'])] [set(['i', 'h'])] [set(['k', 'r', 'l']), set(['a', 'c', 'b']), set(['a', 'e', 'd', 'f'])] [] [set(['a', 'c', 'b']), set(['h', 'g']), set(['i', 'h'])] [set(['a', 'c', 'b']), set(['a', 'e', 'd', 'f']), set(['i', 'h'])] [set(['k', 'r', 'l']), set(['a', 'e', 'd', 'f']), set(['a', 'c']), set(['i', 'h'])] [set(['k', 'r', 'l']), set(['a', 'c', 'b']), set(['h', 'g'])] [set(['a', 'c', 'b'])] [set(['k', 'r', 'l']), set(['a', 'c', 'b']), set(['a', 'e', 'd', 'f']), set(['i', 'h', 'g'])] [set(['a', 'e', 'd', 'f']), set(['a', 'c']), set(['i', 'h', 'g'])] [set(['k', 'r', 'l']), set(['a', 'e', 'd', 'f']), set(['i', 'h', 'g'])] [set(['a', 'e', 'd', 'f']), set(['i', 'h'])] [set(['a', 'c', 'b']), set(['a', 'e', 'd', 'f']), set(['i', 'h', 'g'])] [set(['k', 'r', 'l']), set(['a', 'e', 'd', 'f']), set(['a', 'c']), set(['i', 'h', 'g'])] [set(['a', 'c'])] [set(['k', 'r', 'l']), set(['a', 'c']), set(['h', 'g'])] [set(['k', 'r', 'l']), set(['h', 'g']), set(['i', 'h'])] [set(['k', 'r', 'l']), set(['a', 'c', 'b']), set(['a', 'e', 'd', 'f']), set(['i', 'h'])] [set(['a', 'e', 'd', 'f']), set(['a', 'c']), set(['i', 'h'])] [set(['a', 'c']), set(['h', 'g']), set(['i', 'h'])] [set(['k', 'r', 'l']), set(['a', 'e', 'd', 'f']), set(['i', 'h'])] [set(['k', 'r', 'l']), set(['a', 'e', 'd', 'f']), set(['a', 'c'])] [set(['a', 'e', 'd', 'f']), set(['i', 'h', 'g'])] [set(['a', 'c', 'b']), set(['a', 'e', 'd', 'f']), set(['h', 'g']), set(['i', 'h'])] [set(['k', 'r', 'l']), set(['a', 'e', 'd', 'f']), set(['a', 'c']), set(['h', 'g'])] [set(['k', 'r', 'l']), set(['a', 'e', 'd', 'f']), set(['h', 'g']), set(['i', 'h'])] [set(['a', 'e', 'd', 'f']), set(['a', 'c'])] [set(['k', 'r', 'l']), set(['h', 'g'])] [set(['k', 'r', 'l']), set(['a', 'e', 'd', 'f']), set(['h', 'g'])] [set(['k', 'r', 'l']), set(['a', 'c']), set(['h', 'g']), set(['i', 'h'])] [set(['h', 'g'])] [set(['k', 'r', 'l']), set(['a', 'c', 'b'])] [set(['k', 'r', 'l']), set(['a', 'c', 'b']), set(['i', 'h'])] [set(['a', 'c', 'b']), set(['i', 'h', 'g'])] [set(['a', 'c', 'b']), set(['a', 'e', 'd', 'f']), set(['h', 'g'])] [set(['a', 'c', 'b']), set(['h', 'g'])] [set(['k', 'r', 'l']), set(['a', 'c', 'b']), set(['a', 'e', 'd', 'f']), set(['h', 'g']), set(['i', 'h'])] [set(['k', 'r', 'l']), set(['i', 'h'])] [set(['k', 'r', 'l']), set(['a', 'c', 'b']), set(['i', 'h', 'g'])] [set(['a', 'c', 'b']), set(['i', 'h'])] [set(['a', 'c']), set(['i', 'h'])] [set(['k', 'r', 'l']), set(['a', 'c']), set(['i', 'h', 'g'])] [set(['k', 'r', 'l']), set(['a', 'e', 'd', 'f']), set(['a', 'c']), set(['h', 'g']), set(['i', 'h'])] [set(['k', 'r', 'l']), set(['a', 'e', 'd', 'f'])] [set(['a', 'c']), set(['h', 'g'])] [set(['k', 'r', 'l']), set(['i', 'h', 'g'])] [set(['a', 'e', 'd', 'f']), set(['a', 'c']), set(['h', 'g'])] [set(['a', 'e', 'd', 'f']), set(['h', 'g']), set(['i', 'h'])] [set(['a', 'c']), set(['i', 'h', 'g'])] [set(['k', 'r', 'l']), set(['a', 'c']), set(['i', 'h'])] [set(['k', 'r', 'l']), set(['a', 'c'])] [set(['a', 'e', 'd', 'f']), set(['h', 'g'])] [set(['k', 'r', 'l']), set(['a', 'c', 'b']), set(['h', 'g']), set(['i', 'h'])] [set(['a', 'e', 'd', 'f'])] [set(['i', 'h', 'g'])] Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list