¿Por qué no funciona str.translate en Python 3?

¿Por qué 'a'.translate({'a':'b'}) devuelve 'a' lugar de 'b' ? Estoy usando Python 3.

Las claves utilizadas son los ordinales de los personajes, no los personajes en sí mismos:

 'a'.translate({ord('a'): 'b'}) 

Es más fácil usar str.maketrans

 >>> 'a'.translate(str.maketrans('a', 'b')) 'b' >>> help(str.translate) Help on method_descriptor: translate(...) S.translate(table) -> str Return a copy of the string S, where all characters have been mapped through the given translation table, which must be a mapping of Unicode ordinals to Unicode ordinals, strings, or None. Unmapped characters are left untouched. Characters mapped to None are deleted.