Thanks for your answer, SnapCracklins!
I tried your approach before, but found a caveat that didn't really look solvable with arrays or dictionaries for me.
So I opted for creating classes for a base monster, that gets initialized with base values (in the _init() method from tres reference files). The reason also was that I want to define functions for attacking, getting damage, levelling up etc, right inside one specific monster instance and having the ability to change that aswell.
That did not seem possible with just base values like in dictionaries (or is there a way to save instances of custom classes in dictionaries)?
e.g. I currently save my monster party of 6 monsters in an array of Monster classes and initialize them based on the inst2dict() values in my savegame when loading the game.
That way I have differing values from the base class and can override stuff inside there.
Thats seems to be a plausible and extendable way for me, but let's see when I see a downside of this approach as well :)