why should dict not be callable?

Robert Kern robert.kern at gmail.com
Tue Oct 17 21:37:06 CEST 2006

georgeryoung at gmail.com wrote:
> A couple of times recently I've come across this problem:  I have a
> large list to sort and I need to the the "key=function" argument to
> sort appropriately.  But I actually have the key mapping in a big
> dictionary.  Now I have to make an intermediary function:
> def key_fn(key):
>    return key_dict[key]
> If a dict were callable directly, this would be unnecessary.  Often the
> small extra complexity and compute time is not important, but in
> sorting a large list, it could be a significant difference.  Is there
> some reason a subscriptable thing like a dict should *not* be callable?

Because you can pass key_dict.get instead. Or even key_dict.__getitem__ if you 
don't want the default=None behavior of the .get() method.

Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco

More information about the Python-list mailing list