Python Switch Statements - part 2

Feb 11, 2008

My friend Lex read my post on Python’s lack of switch statements and sent me a note that the normal method for implementing something along the lines of a switch in Python is to use a dictionary. First, let’s define some functions:

def fooFunc():
    print 'Got foo?'
def barFunc():
    print 'Not foo.'
def nomatch():
    print 'No function to speak of!'

string = 'foo'

Now we can create a dictionary and just lookup the variable you want to switch upon:

# Make a dictionary and call it switch
switch = {
    'foo': fooFunc,
    'bar': barFunc
    }

# Find the string in the dictionary, thereby calling the function
switch[string]()
switch['bar']()

# Another way to do the dictionary lookup
switch.get(string, nomatch)()
switch.get('bar', nomatch)()

Which will call the function in the switch dictionary, or call nomatch if none of the dictionary entries match. Or create an anonymous dictionary and do it all at once, more like a traditional switch:

{
    'foo' : fooFunc,
    'bar' : barFunc
}[string]()