Можно ли использовать ассоциативные массивы в качестве альтернативы операторов ветвления?
Да, это вполне приемлемый вариант, и гораздо лучше исходного. Передавать types в данном случае, пожалуй, ни к чему, лучше просто хранить где-нибудь.
Не только можно, но и рекомендуется, и не только на Python, но даже и на Java (а, значит, на Python и подавно), правда, в силу специфики языка, там используются не ассоциативные массивы, а перечисляемые типы...