Is it possible to use a dict in a scene property group?

I want to save a dict of random information to the scene, per .blend file, the dict updates fine but when the file is reloaded it returns to its defaults.

    bl_info = {
    "name": "Test",
    "author": "Test",
    "version": (1, 0),
    "blender": (2, 80, 0),
    "description": "",
    "category": "3D View"}

import bpy
from import persistent

region_3d_settings = (

class Test_Variables(bpy.types.PropertyGroup):

    startup_settings = {"clip" : {"start" : 0.01, "end" : 100},
                          "viewport" : {},

def pre_save(scene):

    self_vars = bpy.context.scene.test_vars

    for a in bpy.context.screen.areas:
        if a.type == 'VIEW_3D':

            for setting in region_3d_settings:
                self_vars.startup_settings["viewport"][setting] = getattr(a.spaces[0].region_3d, setting)

            for s in a.spaces:
                if s.type == 'VIEW_3D':
                    self_vars.startup_settings["clip"]["start"] = s.clip_start
                    self_vars.startup_settings["clip"]["end"] = s.clip_end

classes = (

def register():
    for cls in classes:
    bpy.types.Scene.test_vars = bpy.props.PointerProperty(type = Test_Variables)

def unregister():
    for cls in classes:
    del bpy.types.Scene.test_vars

    if pre_save.__name__ in [hand.__name__ for hand in]:

if __name__ == "__main__":