On 10/09/2013 3:15pm, Armin Rigo wrote:
Hi Richard,

On Tue, Sep 10, 2013 at 3:42 PM, Richard Oudkerk <shibt...@gmail.com> wrote:
I guess another example is creating an "identity dict" (see
http://code.activestate.com/lists/python-ideas/7161/) by doing

     d = transformdict(id)

This is bogus, because only the id will be stored, and the original
key object will be forgotten (and its id probably reused).

Seems to work for me:

>>> import collections
>>> d = collections.transformdict(id)
>>> L = [1,2,3]
>>> d[L] = None
>>> L in d
True
>>> [1,2,3] in d
False
>>> print(d[L])
None
>>> d._data
{41444136: ([1, 2, 3], None)}
>>> list(d)
[[1, 2, 3]]

However __repr__() is broken:

>>> d
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
File "C:\Repos\cpython-dirty\lib\collections\abc.py", line 444, in __repr__
    return '{0.__class__.__name__}({0._mapping!r})'.format(self)
File "C:\Repos\cpython-dirty\lib\collections\__init__.py", line 944, in __repr__
    self._transform, repr(dict(self)))
TypeError: unhashable type: 'list'

--
Richard
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to