Dictionary of Functions

Kevin Gullikson kevin.gullikson at gmail.com
Thu Nov 15 17:04:01 CET 2012


Hi all,

I am trying to make a dictionary of functions, where each entry in the
dictionary is the same function with a few of the parameters set to
specific parameters. My actual use is pretty complicated, but I managed to
boil down the issue I am having to the following example:

In [1]: def test_fcn(a, x):
   ...:     return a*x
   ...:

In [2]: fcn_dict = {}

In [3]: for i in [1,2,3]:
   ...:     fcn_dict[i] = lambda x: test_fcn(i, x)
   ...:

In [4]: fcn_dict
Out[4]:
{1: <function <lambda> at 0x102b42c08>,
 2: <function <lambda> at 0x102b42b18>,
 3: <function <lambda> at 0x102b42c80>}

In [5]: fcn_dict[1](5)
Out[5]: 15

In [6]: fcn_dict[2](5)
Out[6]: 15

In [7]: fcn_dict[3](5)
Out[7]: 15


As you can see, all of the functions are returning the value that I want
for fcn_dict[3]. If I make separate functions for each case instead of a
dictionary it works, but I would really prefer to use dictionaries if
possible. Is there a way to make this work?

Thanks,

Kevin Gullikson
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20121115/0f7a7b5a/attachment.html>


More information about the Python-list mailing list