python bijection

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Fri Nov 27 21:36:13 EST 2009


En Fri, 27 Nov 2009 15:12:36 -0300, Francis Carr <coldtortuga at gmail.com>  
escribió:

> I was really inspired by this discussion thread! :-)
>
> After much tinkering, I think I have a simpler solution.  Just make
> the inverse mapping accessible via an attribute, -AND- bind the
> inverse of -THAT- mapping back to the original.  The result is a
> python dict with NO NEW METHODS except this inverse-mapping
> attribute.  I have posted it on code.activestate.com as <a
> href="http://code.activestate.com/recipes/576968/">Recipe 576968:
> Flipdict -- python dict that also maintains a one-to-one inverse
> mapping</a>

Nice idea! Just a couple of comments:

Instead of:
	self._flip = dict.__new__(self.__class__)
I'd write:
	self._flip = self.__class__()
unless I'm missing something (but see the next point).

Also, although Python's GC is able to handle them, I prefer to avoid  
circular references like those between x and x._flip.  Making self._flip a  
weak reference (and dereferencing it in the property) should be enough.

-- 
Gabriel Genellina




More information about the Python-list mailing list