Oi, Lucas, como vai?
Seu código atende bem à proposta do exercício e a lógica do jogo está correta. O uso do dicionário para definir as relações de vitória deixou a solução simples e fácil de entender, além de evitar vários condicionais encadeados.
Um pequeno ponto que você pode considerar é que o uso de return print(...) não é necessário, já que a função não precisa retornar um valor, apenas exibir o resultado. Se quiser evoluir o código, você pode fazer a função retornar o resultado em vez de imprimir diretamente, o que facilitaria reutilização em outros contextos.
Parabéns pelo exercício, ficou bem organizado e funcional.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!