key - key pairs

Ivan Van Laningham ivanlan at
Thu Jun 23 17:35:17 EDT 2005

Hi All--

Terry Hancock wrote:
> On Thursday 23 June 2005 02:40 pm, Florian Lindner wrote:
> > is there in python a kind of dictionary that supports key - key pairs?
> > I need a dictionary in which I can access a certain element using two
> > different keys, both unique.
> >
> > For example:
> >
> > I've a dictionary with strings and times. Sometimes I have the string and I
> > want to have the time, other time I've the time and I want the string. It
> > is important that one of the keys supports the min/max builtin function.
> Well, really, you're always using one or the other as the "key" and the other
> as the "value".  Furthermore, it is not in the general case assured that you
> can do this --- the keys may not really be 1:1.
> If you are content to restrict yourself to the 1:1 case, you can construct
> an inverse dictionary from the first dictionary like this:
> time2string = dict([ (b,a) for a,b in string2time.items() ])
> Note that if string2time has duplicate values, this will arbitrarily pick
> one (in a consistent, but implementation dependent way) to use as
> the key in the inverse mapping.

Well, Florian said, "using two different keys, both unique"; if that is
true, then a single key maps to a single value & vice versa.  Easiest
way, it seems to me, would be to subclass dict and provide get/set that
always insert the value as a key.  So that dict["string"]=time also
means dict[time]="string".  Only one dict required then.

Or am I missing something?

Ivan Van Laningham
God N Locomotive Works
Army Signal Corps:  Cu Chi, Class of '70
Author:  Teach Yourself Python in 24 Hours

More information about the Python-list mailing list