<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _generate_default_grp_constraints(roles, network_constraints):
 """Generate default symetric grp constraints. """

    default_delay = network_constraints.get('default_delay')
    default_rate = network_constraints.get('default_rate')
    default_loss = network_constraints.get('default_loss', 0)
    except_groups = network_constraints.get('except', [])
    grps = network_constraints.get('groups', roles.keys())
    # expand each groups
    grps = [expand_groups(g) for g in grps]
    # flatten
    grps = [x for expanded_group in grps for x in expanded_group]
    # building the default group constraints
    return [{'src': grp1,
             'dst': grp2,
             'delay': default_delay,
             'rate': default_rate,
             'loss': default_loss}
            for grp1 in grps for grp2 in grps
            if ((grp1 != grp2
                 or _src_equals_dst_in_constraints(network_constraints, grp1))
                and grp1 not in except_groups and grp2 not in except_groups)]