<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def accelerator_experiments(self, key, value):
 """Populate the ``accelerator_experiments`` key."""

    result = []

    a_value = force_single_element(value.get('a'))
    e_values = [el for el in force_list(value.get('e')) if el != '-']
    zero_values = force_list(value.get('0'))

    if a_value and not e_values:
        result.append({'accelerator': a_value})

    # XXX: we zip only when they have the same length, otherwise
    #      we might match a value with the wrong recid.
    if len(e_values) == len(zero_values):
        for e_value, zero_value in zip(e_values, zero_values):
            result.append({
                'legacy_name': e_value,
                'record': get_record_ref(zero_value, 'experiments'),
            })
    else:
        for e_value in e_values:
            result.append({'legacy_name': e_value})

    return result