Once you run a program you compiler reserves some RAM memory (volatile) and allocate your dictionary there, so you can have access to it while your code is running (the instance of your code which is a process). So, the reason you cannot keep a variable (dictionary in this case) is because it's not been saved in a NON-VOLATILE storage and then, as soon as the execution of the process stops, all the RAM space reserved for your variables is released.
If you want to keep the dictionary information, I recommend you to use an actual database, or you can just save the content of your dictionary into a file and read it at the begining of your code. Here you have some examples:
BBDD: I really recommend you to start using databases as you will find it very useful in the future.
Read/Write file: simple read/write operations.
Dump file: save information to a binary file, is better than the simple read/write.