[EMAIL PROTECTED]: > I'd like to have a dictionary (actually a nested dictionary) to call > these functions so I can avoid if-then-elsing everything. Eath > dictionary item has three things in it: the function to be called, a > string to pass to the function (which is also the key to the dict), and > a tuple to pass to the function. In the case of the function with no > arguments, obviously I'd like not to pass anything. [...] > something like this: > alldict = \ > {'pulse': {'func': self.arbtrandef, 'args':(2,5)},\ > 'sin' : {'func': self.arbtrandef, 'args':(2,3)},\ > 'exp' : {'func': self.arbtrandef, 'args':(2,4)},\ > 'pwl' : {'func': self.pwldef , 'args': > (None,)},\ <------- how > do I store "no" arguments? > 'sffm' : {'func': self.arbtrandef, 'args':(5,0)}} > > for it in alldict.items(): > name = it[0] > args = (name,) + it[1]['args'] > it[1]['func'](*args)
I would do it like this: alldict = { 'pulse': (self.arbtrandef, (2, 5)), # function and args packed in a tuple 'sin' : (self.arbtrandef, (2, 3)), 'exp' : (self.arbtrandef, (2, 4)), 'pwl' : (self.pwldef, ()), # empty tuple represented by () 'sffm' : (self.arbtrandef, (5, 0)), } for (fname, (func, args)) in alldict.items(): # items unpacked directly func(fname, *args) Best regards. -- Roberto Bonvallet -- http://mail.python.org/mailman/listinfo/python-list