<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def keywords(self, key, values):
 """Populate the ``keywords`` key. Also populates the ``energy_ranges`` key through side effects. """

    keywords = self.get('keywords', [])
    energy_ranges = self.get('energy_ranges', [])

    for value in force_list(values):
        if value.get('a'):
            schema = force_single_element(value.get('2', '')).upper()
            sources = force_list(value.get('9'))

            a_values = force_list(value.get('a'))

            if 'conference' not in sources:
                for a_value in a_values:
                    keywords.append({
                        'schema': schema,
                        'source': force_single_element(sources),
                        'value': a_value,
                    })

        if value.get('e'):
            energy_ranges.append(ENERGY_RANGES_MAP.get(value.get('e')))

    self['energy_ranges'] = energy_ranges
    return keywords