<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def curtailment(self):
 """ Holds curtailment assigned to each generator per curtailment target. Returns ------- :obj:`dict` with :pandas:`pandas.DataFrame<dataframe>` Keys of the dictionary are generator types (and weather cell ID) curtailment targets were given for. E.g. if curtailment is provided as a :pandas:`pandas.DataFrame<dataframe>` with :pandas.`pandas.MultiIndex` columns with levels 'type' and 'weather cell ID' the dictionary key is a tuple of ('type','weather_cell_id'). Values of the dictionary are dataframes with the curtailed power in kW per generator and time step. Index of the dataframe is a :pandas:`pandas.DatetimeIndex<datetimeindex>`. Columns are the generators of type :class:`edisgo.grid.components.GeneratorFluctuating`. """

        if self._curtailment is not None:
            result_dict = {}
            for key, gen_list in self._curtailment.items():
                curtailment_df = pd.DataFrame()
                for gen in gen_list:
                    curtailment_df[gen] = gen.curtailment
                result_dict[key] = curtailment_df
            return result_dict
        else:
            return None