Bo Peng wrote:
Dear list,

I have many dictionaries with the same set of keys and I would like to write a function to calculate something based on these values. For example, I have

a = {'x':1, 'y':2}
b = {'x':3, 'y':3}

def fun(dict):
  dict['z'] = dict['x'] + dict['y']

fun(a) and fun(b) will set z in each dictionary as the sum of x and y.

My function and dictionaries are a lot more complicated than these so I would like to set dict as the default namespace of fun. Is this possible? The ideal code would be:

def fun(dict):
  # set dict as local namespace
  # locals() = dict?
  z = x + y

You can part way there using keyword arguments. You just have to use dictionary syntax for changing values in the dictionary:


 >>> def f(d, x=None, y=None):
 ...   d['z'] = x + y
 ...
 >>> a = {'x':1, 'y':2}
 >>> b = {'x':3, 'y':3}
 >>>
 >>> f(a, **a)
 >>> a
{'y': 2, 'x': 1, 'z': 3}
 >>> f(b, **b)
 >>> b
{'y': 3, 'x': 3, 'z': 6}

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

Reply via email to