Let's not confuse (how the engine stores data) from (how the GUI presents data). Surely the GUI should print a nice list of talismans per pack.
With that out of the way...
Hunch for storage: Tie to levels, for best object-orientation. Loose levels that are not in a pack, but that have talismans, are meaningful.
Tying to packs sounds error-prone, especially with the level position as key.
Lag: I assume you want to display a list of all talismans per pack, but fear that reading talisman data out of 200 level files takes too long. Have you measured? Is this even a problem? Efficiency is a good reason to break the logical design, and object-orientation has its cost over a central database -- but maybe it's a negligible cost here. <_<
Complicates saving: More details please. You have solved-status data per level, and talisman data per level. What is the exact architecture for this saving?
-- Simon