Simon Willison’s Weblog

Subscribe

Switch statements in Python

7th May 2004

Python doesn’t support a native switch statement. I’ve found myself using the following coding idiom instead recently which seems to work pretty well:

{'option1': function1,
 'option2': function2,
 'option3': function3,
 'option4': function4}[value]()

This works with lambdas as well, for inline calculations. Here’s a switch statement that assigns to a variable in PHP:

switch ($value) {
    case 'a':
        $result = $x * 5;
        break;
    case 'b':
        $result = $x + 7;
        break;
    case 'c':
        $result = $x - 2;
        break;
}

And here’s the equivalent code in Python:

result = {
  'a': lambda x: x * 5,
  'b': lambda x: x + 7,
  'c': lambda x: x - 2
}[value](x)

This is Switch statements in Python by Simon Willison, posted on 7th May 2004.

Next: Google approved PageRank stripping

Previous: What makes a geek?

Previously hosted at http://simon.incutio.com/archive/2004/05/07/switch