<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _shannon_radii_from_cn(species_list, cn_roman, radius_to_compare=0):
 """ Utility func to get Shannon radii for a particular coordination number. As the Shannon radii depends on charge state and coordination number, species without an entry for a particular coordination number will be skipped. Args: species_list (list):
 A list of Species to get the Shannon radii for. cn_roman (str):
 The coordination number as a roman numeral. See Specie.get_shannon_radius for more details. radius_to_compare (float, optional):
 If set, the data will be returned with a "radii_diff" key, containing the difference between the shannon radii and this radius. Returns: (list of dict):
 The Shannon radii for all Species in species. Formatted as a list of dictionaries, with the keys: - "species": The species with charge state. - "radius": The Shannon radius for the species. - "radius_diff": The difference between the Shannon radius and the radius_to_compare optional argument. """

    shannon_radii = []

    for s in species_list:
        try:
            radius = s.get_shannon_radius(cn_roman)
            shannon_radii.append({
                'species': s, 'radius': radius,
                'radii_diff': radius - radius_to_compare})
        except KeyError:
            pass

    return shannon_radii