Replacements for switch statement in Python?
The original answer below was written in 2008. Since then, Python 3.10 (2021) introduced the match
-case
statement which provides a first-class implementation of a "switch" for Python. For example:
def f(x): match x: case 'a': return 1 case 'b': return 2 case _: return 0 # 0 is the default case if x is not found
The match
-case
statement is considerably more powerful than this simple example.
You could use a dictionary:
def f(x): return { 'a': 1, 'b': 2, }[x]
If you like defaults, you could use the dictionary get(key[, default])
method:
def f(x): return { 'a': 1, 'b': 2 }.get(x, 9) # 9 is default if x is not found
I've always liked doing it this way
result = { 'a': lambda x: x * 5, 'b': lambda x: x + 7, 'c': lambda x: x - 2}[value](x)