¿Cómo implementar una tabla hash bidireccional eficiente?

Python dictes una estructura de datos muy útil: d = {'a': 1, 'b': 2} d['a'] # get 1 A veces también le gustaría indexar por valores. d[1] # get 'a' ¿Cuál es la forma más eficiente de implementar esta estructura de datos? ¿Alguna forma oficial que recomiende hacerlo?