Используйте список кортежей вместо словаря. Затем, когда вы перебираете список, вы можете получить доступ к предыдущему индексу.
Кроме того, вам не следует сбрасывать словарь month_cal
на каждой итерации, поскольку вы теряете информацию за предыдущий месяц.
Вы должны назначить cal_no
до цикла for i
, так как он не изменяется в пределах l oop.
month_day = [('JAN', 31), ('FEB', 28), 'MARCH': 31, 'APRIL': 30, ('MAY', 31), 'JUNE': 30, 'JULY': 31, ('AUG', 31),
'SEPT': 30, ('OCT', 31), ('NOV', 30), ('DEC', 31)]
year_cal_no = {}
month_cal = {}
month, days = month_day[0]
cal_no = 40
for i in range(1, days+1):
month_cal_no = cal_no * i
print(i, month_cal_no)
month_cal[month] = cal_no
year_cal_no[month] = month_cal_no
for month_index, (month, days) in enumerate(month_day[1:]):
cal_no = month_cal[month_day[month_index][0]]
for i in range(1, days+1):
month_cal_no = cal_no * i
print(i, month_cal_no)
month_cal[month] = cal_no
year_cal_no[month] = month_cal_no
print(year_cal_no)
print(month_cal)