el cambio de caja en python no funciona; necesita otro patrón

Necesito ayuda con un código aquí, quería implementar el patrón de mayúsculas y minúsculas en Python, así que, como decía un tutorial, puedo usar un diccionario para eso, pero aquí está mi problema:

  # type can be either create or update or .. 
  message = { 'create':msg(some_data),
              'update':msg(other_data)
              # can have more
            }

  return message(type)

pero no funciona para mí porque algunos_datos u otros_datos pueden ser Ninguno (genera un error si no es ninguno) y la función msg debe ser simple (no quiero ponerle alguna condición).

El problema aquí es que la función msg () se ejecuta cada vez para completar el dict a diferencia del patrón de mayúsculas y minúsculas, que generalmente en otro lenguaje de programación no ejecuta el código en elcase a menos que sea un partido.

¿hay alguna otra manera de hacer esto o solo necesito hacerlo si elif ...

Actualizar: gracias por todas las respuestas, pero en realidad es más así

message = { 'create': "blabla %s" % msg(some_data),
            'update': "blabla %s" % msg(other_data)
            'delete': "blabla %s" % diff(other_data, some_data)
           }

así que lambda no funciona aquí y no se llama a la misma función, por lo que es más como un caso de interruptor real que necesito, y tal vez tenga que pensar en otro patrón.

Respuestas a la pregunta(9)

Su respuesta a la pregunta