The most obvious use case that comes to mind is for a control system. Imagine you have many players in a game where they can send you various commands across the network.. you might want to create a dict like:
player_commands = {
'move' : Player.move
'attack': Player.attack
...
}
Then you can read the string and call the appropriate method with any Player object
player_commands[cmd](theplayer)
And it saves you having to have a big if/else chain like
if cmd == 'move':
theplayer.move()
elif cmd == 'attack':
...
Also since it's a dictionary you can update/edit it dynamically.