switch-case statement for STRINGS in Python

Gonzalo AB picture Gonzalo AB · Aug 17, 2018 · Viewed 19.2k times · Source

I need to do something similar to the CASE WHEN .. OR .. THEN from SQL in python for STRINGS. For example, if I say "DOG" or "CAT".. my translation is "ANIMAL".

I don't want to use IF ELIF ELIF..

The only solution that i can see is:

l = ['cat','dog', 'turttle']
d = {'animal': ['cat','dog', 'turttle']}
word = 'cat'
if word in l:
    for i, j in d.iteritems():
        if word in j:
            print i
        else:
            print word

animal

It works but it seems very ugly..

Any other solution?

THANKS!

Answer

blhsing picture blhsing · Aug 17, 2018

For your purpose I would suggest that you go with a dict indexed by the name of the animal instead. The list l in your code would then also be redundant because it's simply the keys of this dict.

d = {
    'cat': 'animal',
    'dog': 'animal',
    'turtle': 'animal'
}
word = 'cat'
print(d.get(word, word))