Ersättningar för switch statement i Python?

Jag vill skriva en funktion i Python som returnerar olika fasta värden baserat på värdet av ett inmatningsindex.

I andra språk skulle jag använda ett switch- eller case-uttalande, men Python verkar inte ha något switch-uttalande. Vilka är de rekommenderade Python-lösningarna för detta scenario?

Lösning

Du kan använda en ordbok:

def f(x):
    return {
        'a': 1,
        'b': 2,
    }[x]
Kommentarer (18)

Jag har alltid gillat att göra det på det här sättet.

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

Härifrån

Kommentarer (15)

Om du egentligen bara vill returnera ett förutbestämt, fast värde kan du skapa en ordbok med alla möjliga inmatningsindex som nycklar, tillsammans med motsvarande värden. Du kanske inte heller vill att en funktion ska göra detta - om du inte beräknar returvärdet på något sätt.

Och om du känner för att göra något switch-liknande, se här.

Kommentarer (0)