Is there a way to dynamically manipulate the spellcheck dictionary?
When you press the Learn button, the word is added to ~/Library/Spelling/LocalDictionary if the language is set to automatic or to ~/Library/Spelling/en if the language is set to U.S. English. en_GB is used for British English and en is used only for U.S. English.

If you edit the files in ~/Library/Spelling/ directly, you can apply the changes by terminating the AppleSpell process.

So try to assign a shortcut to a script like this:

cd ~/Library/Spelling
if [[ -e fiction ]]; then
  mv en normal; mv fiction en; d=fiction
else
  mv en fiction; mv normal en; d=normal
fi
killall AppleSpell
terminal-notifier -title "Using dictionary $d" -message '' -group spellingdictionary
sleep 3
terminal-notifier -remove spellingdictionary


If for example you use the British English dictionary, change en to en_GB.

You can install terminal-notifier with sudo /usr/bin/gem install terminal-notifier.