Set of Dictionary

Steven D'Aprano steve at REMOVETHIScyber.com.au
Thu Jun 16 19:30:05 EDT 2005


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

> On 6/16/05, Vibha Tripathi <vibtrip at yahoo.com> 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




More information about the Python-list mailing list