Dennis Lee Bieber wrote:
On Sun, 13 Jul 2008 16:21:11 -0700 (PDT), Kless
<[EMAIL PROTECTED]> declaimed the following in comp.lang.python:

I need a dictionary where get the result from a 'key' (on left), but
also from a 'value' (on right), how to get it?

I know that dictionaries aren't bidirectional, but is there any way
without use two dictionaries?

        Just out of curiosity... What do you expect to have returned from...

aDict = { "one" : "two",
                "three" : "four",
                "What?" : "two"     }

when looking for the value "two"?

        In a dictionary, the /keys/ are unique... but the /values/ can be
duplicates.

I wonder if anyone has implemented an 'equivalence class' class (for
finite sets) based on this.

Obviously the relation defined by
   k1~k2  iff D[k1] == D[k2]
does partition the set of all keys as an equivalence class.

So ... as a kind of inverse you could return a set, a subset of the
keys. How you would get a canonical representative of that set is
a different matter, of course. Unless, as in the OP's case, it is
a singleton set.

It would seem more efficient to do this when a key-value pair is
added or removed from the original dictionary rather than iterating
over all the keys each time you used it.


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to