<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def getDefaultDict(modname, config_key, loader, reload=False, filename=None):
 """Returns default AIT dictonary for modname This helper function encapulates the core logic necessary to (re)load, cache (via util.ObjectCache), and return the default dictionary. For example, in ait.core.cmd: def getDefaultDict(reload=False):
 return ait.util.getDefaultDict(__name__, 'cmddict', CmdDict, reload) """

    module   = sys.modules[modname]
    default  = getattr(module, 'DefaultDict', None)

    if filename is None:
        filename = ait.config.get('%s.filename' % config_key, None)

    if filename is not None and (default is None or reload is True):
        try:
            default = ObjectCache(filename, loader).load()
            setattr(module, 'DefaultDict', default)
        except IOError, e:
            msg = 'Could not load default %s "%s": %s'
            log.error(msg, config_key, filename, str(e))

    return default or loader()