Hola a todos!!, tengo una pregunta, espero me puedan ayudar...
Como saben, en Python no existe la sentencia switch - case, por lo tanto una manera de solucionarlo es emulandolo con un diccionario, por ejemplo:
Simulación de sentencia switch(case) en python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | defCero():print'Cero'defUno():print'Uno'defDos():print'Dos'Switch={0:Cero,1:Uno,2:Dos,}Num=1Switch[Num]() |
Ok, funciona sin problemas, pero que tal si necesito correr 2 o mas funciones a la vez...
1 2 3 4 5 | Switch={0:Cero,1:(Uno,Dos)}Switch[Num]()# No funciona!! |
TypeError Traceback (most recent call last)
/media/datos/home/centos/roberto/<ipython console=""> in <module>()
TypeError: 'tuple' object is not callable
1 | Switch[Num[0]]()# No funciona!! |
TypeError Traceback (most recent call last)
/media/datos/home/centos/roberto/<ipython console=""> in <module>()
TypeError: 'int' object is unsubscriptable
Me doy cuenta de que es una tupla dentro de un diccionario, por lo tanto, ¿Se puede acceder a los datos de la tupla dentro del diccionario, de tal forma que se pueda simular el switch(case)?
Si no se puede, entiendo que debe de hacerse con if, elif, else, pero me gustaría saber si se puede de la forma que propongo...
De antemano, Gracias.
Edición: Me acabo de dar cuenta que puedo acceder al índice uno del diccionario, pero sólo ejecuta la última función, por lo que la pregunta sigue vigente.
1 2 3 4 5 6 7 | In[136]:SwitchOut[136]:{0:<functionCeroat0x7f5f855d31b8>,1:(<functionUnoat0x7f5f855d37d0>,<functionDosat0x7f5f855d3140>)}In[137]:Switch[Num][1]()Dos |