Я пытаюсь упростить блок if-elif-else в Python с помощью эквивалента регистра Switch. Но у меня возникают проблемы при попытке выполнить математические операции в словаре регистра переключателей
Я выполняю этот код внутри цикла FOR, который выполняется через фрейм данных pandas. В основном делать математику в зависимости от условия.
Пример кадра данных:
10889 103.579 89.160 2.98 2.1154 NaN in 0.48 0.20 15.0
10890 103.859 89.133 2.98 2.1266 NaN out 0.48 0.20 15.0
10891 104.067 89.133 2.98 2.1349 NaN out 0.48 0.20 15.0
10892 106.867 91.933 2.98 2.293 NaN out 0.48 0.20 15.0
10893 106.867 91.859 2.98 2.2959 NaN sol 0.48 0.20 15.0
10894 106.840 91.579 2.98 2.3072 NaN sol 0.48 0.20 15.0
10895 106.785 91.302 2.98 2.3184 NaN sol 0.48 0.20 15.0
10896 106.728 91.115 2.98 2.3263 NaN text 0.48 0.20 15.0
10897 104.885 89.272 2.98 2.4303 NaN text 0.48 0.20 15.0
10898 104.885 89.272 2.98 0 NaN mid 0.48 0.20 15.0
Текущий кусок кода:
if self.newdataframe.iloc[i]['FT'] in ('in', 'out'):
self.ext_out += edis
elif self.newdataframe.iloc[i]['FT'] == 'sol':
self.ext_sol += edis
elif self.newdataframe.iloc[i]['FT'] == 'mid':
self.ext_mid += edis
elif self.newdataframe.iloc[i]['FT'] == 'text':
self.ext_text += edis
else:
self.ext_other += edis
Преобразование этого в случай переключения. Вот моя попытка. Код выглядит примерно так, но он явно выдает ошибки
newdict = { 'in': self.ext_out += edis,
'out': self.ext_out += edis,
'sol': self.ext_sol += edis,
'mid': self.ext_mid += edis,
'text': self.ext_text += edis}
newdict[self.newdataframe.iloc[i]['FT']]
Я пытался использовать лямбда-функции, но это, кажется, вызывает проблемы с самости переменные. Любые указатели или рекомендации, примеры примеров очень ценятся