On Thu, 16 Jun 2005 21:21:50 +0300, Konstantin Veretennicov wrote:

> On 6/16/05, Vibha Tripathi <(E-Mail Removed)> wrote:

>> I need sets as sets in mathematics:

>

> That's tough. First of all, mathematical sets can be infinite. It's

> just too much memory

> Software implementations can't fully match mathematical abstractions.
But lists can be as long as you like, if you have enough memory. So

can longs and strings. So I don't think the infinity issue is a big one.

>> sets of any unique type of objects including those

>> of dictionaries, I should then be able to do:

>> a_set.__contains__(a_dictionary) and things like that.
Standard Set Theory disallows various constructions, otherwise you get

paradoxes.

For example, Russell's Paradox: the set S of all sets that are not an

element of themselves. Then S should be a set. If S is an element of

itself, then it belongs in set S. But if it is in set S, then it is an

element of itself and it is not an element of S. Contradiction.

The price mathematicians pay to avoid paradoxes like that is that some

sets do not exist. For instance, there exists no universal set (the set

of all sets), no set of all cardinal numbers, etc.

So even in mathematics, it is not true that sets can contain anything.

> Maybe you can use a list for that:

>

>>>> d1 = {1: 2}

>>>> d2 = {3: 4}

>>>> s = [d1, d2]

>>>> {1: 2} in s

> True

>>>> {5: 6} in s

> False

>

>> Can sets in Python 2.4.1, be reimplemented from

>> scratch to not have it work on top of dict?

>

> Sure, why not?
Take a close look at the sets module, written in Python. You could copy

and modify the source code (taking care to obey whatever licencing

restrictions, if any, there are).

--

Steven