[Python-Dev] Proposal to eliminate PySet_Fini (original) (raw)

Josiah Carlson jcarlson at uci.edu
Fri Jun 30 02:37:20 CEST 2006


"Alexander Belopolsky" <alexander.belopolsky at gmail.com> wrote:

On 6/29/06, "Martin v. Löwis" <martin at v.loewis.de> wrote: >... dict is more basic, set is just a special case of > dict for performance reasons. Also, dict is used to define and implement > the language itself, set is "just" a predefined type. > I guess it can be seen either way, just as a chicken and an egg. Does python-3000 still plan to integrate sets and dicts so that a set is a view of a dict? That would support the view that a set is more basic (dict code will depend on set code but not the other way around).

I don't think that makes sense. I see a basic structure as one that can be used to implement other structures. A dict can emulate a set, but a set cannot emulate a dict. Thus, a set is a specialization of a dict with fewer features than the regular dict.

If set has better performance than dict (which I have not noticed so far), it will be appropriate to use it in the language implementation where it can replace a dict. The prime example is the "interned" dict.

The performance, I believe, is based on a Python 2.5 optimization that reduces memory consuption per entry from 12 to 8 bytes per entry.

> ... It is by design that you can use the dict API everywhere, since > dict is part of the language itself. set wasn't designed with such a > goal (the same is true for many other types, I would guess).

That's probably the hart of my proposal. I would like to see sets usable as a part of the language, or an application that embeds the language everywhere where dicts can be used today.

I disagree. You can get everything you need with a dict, and making sets a part of the language (besides being a builtin type), would necessarily add more overhead and maintenance to the language for little gain. If you need set-like functionality, and you need it to not be finalized, use a dict; it is available today, can do all the same things, and you don't need to wait at least 1.5 years until Python 2.6 is out.



More information about the Python-Dev mailing list