Имхо, ты загоняешься. Повтор в двух или трех объектах - ничего страшного.
Я бы хранил так.
Общий темплейт:
json = {
"data": {
"chislitel": {
"mon": [
{
"name": "some name",
"where": "V. 210",
"who": "Torubka"
},
...
],
"tue": [
{
"name": "some name",
"where": "V. 210",
"who": "Torubka"
},
...
],
...и так на каждый день недели
},
"znamenatel": {
...такая же логика
}
}
}
потом генерируем само расписание. это пример данных, они могут быть сгенерированы как угодно
weeks = [
{
"start": "01.01.2017",
"end": "05.01.2017",
"type": "chislitel"
},
{
"start": "08.01.2017",
"end": "12.01.2017",
"type": "znamenatel"
},
...
]
ну и дальше генерировать таблицу
for week in weeks:
вписать в таблицу значение json["data"][week.type]