[Python-Dev] PEP 455: TransformDict
Antoine Pitrou
solipsis at pitrou.net
Sat Sep 14 12:27:06 CEST 2013
On Fri, 13 Sep 2013 21:59:11 -0700
Ethan Furman <ethan at stoneleaf.us> wrote:
>
> > I mean - given no function to retrieve the canonical key,
> > one would have to resort to:
> >
> > my_key = data.__transform__(given_key)
> > for key, value in data.items():
> > if data.__transform__(key) == my_key:
> > ....
>
> Which is exactly why I, and others, would like to have the transform function easily available. Besides being able to
> use it to get a canonical key, one could use it to get the function itself. Yay, introspection!
Well, no, you misunderstand :) The transform function takes an
original key (perhaps "canonical") and returns the transformed key, it
can't do the reverse which is what getitem() does. i.e.:
>>> d = TransformDict(str.lower)
>>> d['Foo'] = 5
>>> d._transform_func('Foo')
'foo'
>>> d.getitem('foo')
[('Foo', 5)]
What getitem() does is make the surjection bijective by restricting its
input domain to the set of stored keys.
Regards
Antoine.
More information about the Python-Dev
mailing list