[Python-Dev] Add a "transformdict" to collections
ncoghlan at gmail.com
Wed Sep 11 14:47:12 CEST 2013
On 11 September 2013 21:57, R. David Murray <rdmurray at bitdance.com> wrote:
> Except it is wider than that: the transform function can be anything,
> not just case folding.
> I suggested surjectiondict or ontodict, but Antoine didn't like those :)
> (I had to look up the terms...it's been a long time since I studied
I'll join the chorus requesting that this live on PyPI for a while first.
I think this is a case similar to what happened with
contextlib.ExitStack: I'm not sure if anyone actually *used*
contextlib2 for anything significant (if they did, they didn't tell me
about it), but just going through the process of properly documenting,
publishing and testing it as a relatively independent project forced
*me* to think through the design. Add in a couple of interesting
conversation with Brandon Rhodes and others about the API design, and
the end result was a *vast* improvement over what originally went up
The barriers to making use of PyPI libraries are also falling with
time, so a solid implementation may still see adoption, even if it's
in the form of copy-and-paste programming rather than actual
I think there are also additional API decisions to be made beyond just
the one about how to declare the mapping function, related to how to
get the mapped key values *out*, as well as how to find out whether or
not two potential key values map to the same actual key.
As my preferred bikeshed colour, I'm going to suggest "MappedKeyDict"
(using a similar naming style to OrderedDict), since the purpose of
the container is to map the domain of the supplied keys to a different
range before doing the value lookup.
Suggested additional methods:
md.map_key(key) # Applies the mapping function to the supplied key
md.mapped_keys() # Like keys(), but with the key mapping function applied
md.mapped_items() # Like items(), but with the key mapping function applied
Another (more dubious) possible method:
md.same_key(key1, key2) # "md.map_key(key1) == md.map_key(key2)"
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
More information about the Python-Dev