human
Solve the following python programming problem given the following code:
@logic.validate(logic.schema.default_follow_user_schema)
def followee_list(context, data_dict):
assistant
#Here is the Python program you requested.

    """Return the list of objects that are followed by the given user.
    Returns all objects, of any type, that the given user is following
    (e.g. followed users, followed datasets, followed groups.. ).
    :param id: the id of the user
    :type id: string
    :param q: a query string to limit results by, only objects whose display
    name begins with the given string (case-insensitive) wil be returned
    (optional)
    :type q: string
    :rtype: list of dictionaries, each with keys ``\type\`` (e.g. ``\user\``,
    ``\dataset\`` or ``\group\``), ``\display_name\`` (e.g. a user\s
    display name, or a package\s title) and ``\dict\`` (e.g. a dict
    representing the followed user, package or group, the same as the dict
    that would be returned by :py:func:`user_show`,
    :py:func:`package_show` or :py:func:`group_show`)
    """
    _check_access('followee_list', context, data_dict)
    def display_name(followee):
        'Return    a    display    name    for    the    given    user,    group    or    dataset    dict.'
        display_name = followee.get('display_name')
        fullname = followee.get('fullname')
        title = followee.get('title')
        name = followee.get('name')
        return (display_name or fullname or title or name)
    followee_dicts = []
    context['skip_validation'] = True
    context['ignore_auth'] = True
    for (followee_list_function, followee_type) in ((user_followee_list, 'user'), (dataset_followee_list, 'dataset'), (group_followee_list, 'group'), (organization_followee_list, 'organization')):
        dicts = followee_list_function(context, data_dict)
        for d in dicts:
            followee_dicts.append({'type': followee_type, 'display_name': display_name(d), 'dict': d})
    followee_dicts.sort(key=(lambda d: d['display_name']))
    q = data_dict.get('q')
    if q:
        q = q.strip().lower()
        matching_followee_dicts = []
        for followee_dict in followee_dicts:
            if followee_dict['display_name'].strip().lower().startswith(q):
                matching_followee_dicts.append(followee_dict)
        followee_dicts = matching_followee_dicts
    return followee_dicts