Avoiding if..elsif statements
Simon Forman
rogue_pedro at yahoo.com
Fri Aug 25 18:54:27 EDT 2006
unexpected 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?
Yup.
dispatch = dict(
something = somethingClass.func,
somethingElse = somethingElseClass.func,
anotherthing = anotherthingClass.func,
yetanotherthing = yetanotherthingClass.func
)
def default():
pass
# call it like this
dispatch.get(switch_value, default)()
More information about the Python-list
mailing list