Range по словарю вместо множества if при использовании цикла for
Изучаю Python, и в данный момент пишу программу для анализа данных с браслета MiBand.
Столкнулся с тем, что код выглядит довольно громоздко, и хочу заменить множество повторений if на range по списку. Для того, чтобы код выглядел более компактно. Так же, если разберусь в этим моментом, то смогу делать более детальную аналитику.
Данные берутся из csv файла, и проходит проверка по дате. Если дата совпадает с конкретным месяцем, до данные записываются в словарь. А затем использую данные для подсчёта статистики.
Находил информацию о switch. Но, что-то в данный момент не могу разобраться с кем как switch работает.
Так же в моей программе, есть подобный код для вычисления статистики по часам. Так, сам цикл for там занимает уже 48 строчек кода.
Собственно вопрос, как вместо названия месяцев, пройти циклом по списку?
month_stat_steps = {
'январь': [], 'февраль': [], 'март': [], 'апрель': [], 'май': [], 'июнь': [],
'июль': [], 'август': [], 'сентябрь': [], 'октябрь': [], 'ноябрь': [], 'декабрь': [],
}
file_reader_steps_copy = list(file_reader_steps)
for row in file_reader_steps_copy:
# Забираем данные по месяцам
if row['date'][5:-3] == '01':
month_stat_steps['январь'].append(int(row['steps']))
if row['date'][5:-3] == '02':
month_stat_steps['февраль'].append(int(row['steps']))
if row['date'][5:-3] == '03':
month_stat_steps['март'].append(int(row['steps']))
if row['date'][5:-3] == '04':
month_stat_steps['апрель'].append(int(row['steps']))
Ответы (1 шт):
Можно как-то так с помощью enumerate всё дополнительным циклом сделать:
for row in file_reader_steps_copy:
# Забираем данные по месяцам
for i, month in enumerate(month_stat_steps, 1):
if row['date'][5:-3] == f'{i:02}':
month_stat_steps[month].append(int(row['steps']))