I want to write a function in Python that returns different fixed values based on the value of an input index.
In other languages I would use a switch
or case
statement, but Python does not appear to have a switch
statement. What are the recommended Python solutions in this scenario?
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.
Documentation:
match
statements (under the "More Control Flow Tools" page)match
statement (under "Compound statements" page)If you need to support Python ≤ 3.9, use a dictionary instead:
def f(x):
return {
'a': 1,
'b': 2,
}.get(x, 0) # default case