"unexpected" <[EMAIL PROTECTED]> wrote: > I have a program where based on a specific value from a dictionary, I > call a different function. Currently, I've implemented a bunch of > if..elsif statements to do this, but it's gotten to be over 30 right > now and has gotten rather tedious. Is there a more efficient way to do > this? > > Code: > > value = self.dictionary.get(keyword)[0] > > if value == "something": > somethingClass.func() > elsif value == "somethingElse": > somethingElseClass.func() > elsif value == "anotherthing": > anotherthingClass.func() > elsif value == "yetanotherthing": > yetanotherthingClass.func() > > Is it possible to store these function calls in a dictionary so that I > could just call the dictionary value?
but of course (did you try it?). here's an outline: dispatch = { "something": somethingClass.func, # note: no () here "somethingElse": somethingElseClass.func, "anotherthing": anotherthingClass.func, "yetanotherthing": yetanotherthingClass.func, } ... dispatch[value]() # note: do the call here! or, a bit more robust: try: func = dispatch[value] except KeyError: print "- no handler for", value else: func() tweak as necessary. </F> -- http://mail.python.org/mailman/listinfo/python-list