Avoiding if..elsif statements

Chaz Ginger cginboston at hotmail.com
Fri Aug 25 19:02:24 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?
> 
Why not do it this way?

foo = 
{'something':somethingClass.func,'somethingelse':somethingelseClass.func)

if foo.has_key(value) :
	foo[value]()
else :
	raise OMG, "%s isn't known" % value






More information about the Python-list mailing list