Я пишу сценарий, чтобы найти время встречи для трех человек. Мне удается получить их кодировку статуса Свободен / Занят в двоичном формате, где 0 свободно и 1 занято с шагом 30 минут в течение следующих трех дней. Я сгруппировал их статус по дням в словарный формат, как показано ниже.
print(date_schedule)
{'Monday, 2020-02-03': ['000000000000000000101101001110110000000000000000',
'000000000000000000001111011100001100000000000000',
'000000000000000011110100011000110000000000000000'],
'Tuesday, 2020-02-04': ['000000000000000000100010000000000000000000000000',
'000000000000000000001111001000110000000000000000',
'000000000000000011111000111100101000000000000000'],
'Wednesday, 2020-02-05': ['000000000000000000111000000000000000000000000000',
'000000000000000001001100110000000000000000000000',
'000000000000000000111100000001001000000000000000']}
Цель: Перевести эти 0 в блок из тридцати минутных интервалов.
For Example: 00:00----00:30
00:30----01:00
...
23:30----24:00
Попытка:
#Separate the code into a two dimensional list
schedule = date_free.values()
#Append the block to a new list.
free = []
for value in schedule:
for v in value:
for idx, time in enumerate(v):
if time == '0':
idx = idx/2
end = idx + 0.5
#5 slots, and two decimals
idx = '{:05.2f}'.format(idx).replace('.50','.30').replace('.',':')
end = '{:05.2f}'.format(end).replace('.50','.30').replace('.',':')
free.append((idx + '----' + end))
Проблема: free имеет 372 элемента, и я не знаю, как сделать так, чтобы он стал структура двумерного списка, как это было раньше в schedule (потому что число 0 отличается для каждого v). Есть ли способ не создавать новый список, а напрямую применить вышеуказанную логику c поэлементно к расписанию ?
Бонусный вопрос : я не получил пока нет, но моя следующая цель - найти пересечение этих 30 временных блоков для каждого дня, как показано в примере random ниже. Если у вас есть какие-либо предложения, пожалуйста, дайте мне знать
print(date_time_final)
{'Monday, 2020-02-03': ['08:00----08:30','09:30----10:00','12:00----12:30'],
'Tuesday, 2020-02-04' : ['09:00----09:30','10:30----11:00','13:00----13:30','14:00----14:30']
'Wednesday, 2020-02-05' : ['07:00----07:30','14:30----15:00','15:00----15:30','19:00----19:30']}
Заранее благодарю за помощь!