mudar caso em python não funciona; precisa de outro padrão

Eu preciso de uma ajuda com um código aqui, eu queria implementar o padrão de caso de opção em python, assim como algum tutorial disse, eu posso usar um dicionário para isso, mas aqui está o meu problema:

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

  return message(type)

mas não está funcionando para mim porque some_data ou other_data pode ser None (isso gera um erro se não for nenhum) e a função msg precisa ser simples (não quero colocar alguma condição nela).

o problema aqui é que a função msg () é executada a cada vez para preencher o ditado, diferentemente do padrão de caixa de seleção, que geralmente em outra linguagem de programação não executa o código nocase a menos que seja uma partida.

Existe uma outra maneira de fazer isso ou eu só preciso fazer se elif ...

Atualizar: obrigado por todas as respostas, mas na verdade é mais assim

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

então o lambda não funciona aqui e não é chamada a mesma função, por isso é mais como um caso de comutação real que eu preciso, e talvez eu precise pensar em outro padrão.

questionAnswers(9)

yourAnswerToTheQuestion