Not sure about the speed of this solution either, but you could just loop through your dictionary and repeatedly call the built-in
str.replace(old, new)
This might perform decently well if the original string isn't too long, but it would obviously suffer as the string got longer.