[Python-ideas] An identity dict

Raymond Hettinger raymond.hettinger at gmail.com
Tue Jun 1 06:37:05 CEST 2010


On May 31, 2010, at 7:31 PM, Benjamin Peterson wrote:

> Lie Ryan <lie.1296 at ...> writes:
>> that their id() is expensive is implementation details, and the
>> developer of PyPy should solve that instead of adding a clutch to the
>> stdlib.
> 
> The stdlib isn't just about CPython. We already have optimized primitives for
> CPython, so I don't see why helping other implementations isn't a good cause.

Benjamin, could you elaborate of several points that are unclear:

* If id() is expensive in PyPy, then how are they helped by the code in 
http://codespeak.net/svn/pypy/trunk/pypy/lib/identity_dict.py
which uses id() for the gets and sets and contains?

* In the examples you posted (such as http://codespeak.net/svn/pypy/trunk/pypy/tool/algo/graphlib.py ),
it appears that PyPy already has an identity dict,  so how are they helped by adding one to the collections module?

* Most of the posted examples already work with regular dicts (which check identity before they check equality) -- don't the other implementations already implement regular dicts which need to have identity-implied-equality in order to pass the test suite?  I would expect the following snippet to work under all versions and implementations of Python:

    >>> class A: 
    ...         pass
    >>> a = A()
    >>> d = {a: 10}
    >>> assert d[a] == 10   # uses a's identity for lookup

* Is the proposal something needed for all implementations or is it just an optimization for a particular, non-CPython implementation?


Raymond



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20100531/a311aef1/attachment.html>


More information about the Python-ideas mailing list