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