Я пытаюсь создать ротацию для парных разговоров из-за блокировки.
У меня есть список коллег.
И я создал список дней.
Я хочу назначить дни для каждой пары последовательно, пока все пары не будут назначены.
Но я не могу понять, как отследить, была ли пара уже назначена и как "запустить" до конца коллег ".
Вот что у меня есть:
import itertools
import datetime as dt
import numpy as np
colleagues = ["C",
"S",
"D",
"I",
"P"]
colleague_pairs = sorted(list(itertools.combinations(colleagues, 2)))
start_date = dt.datetime.today() + dt.timedelta(days=5)
dates = [start_date]
current_date = dates[-1]
while len(dates) < (len(colleagues) -1):
new_date = current_date + dt.timedelta(days=1)
if new_date.weekday() < 5:
dates.append(new_date)
current_date = new_date
working_days = [date.strftime('%Y-%m-%d') for date in dates ]
[('C', 'D'), ('C', 'I'), ('C', 'P'), ('C', 'S'),
('D', 'I'), ('D', 'P'),
('I', 'P'),
('S', 'D'), ('S', 'I'), ('S', 'P')]
['2020-05-04', '2020-05-05', '2020-05-06', '2020-05-07']
Я хочу в итоге все даты применить ко всем уникальным парам:
{('C', 'D'): '2020-05-04'}
{('C', 'I'): '2020-05-05'}
{('C', 'P'): '2020-05-06'}
{('C', 'S'): '2020-05-07'}
{('S', 'D'): '2020-05-05'}
{('S', 'I'): '2020-05-06'}
{('S', 'P'): '2020-05-07'}
{('D', 'I'): '2020-05-06'}
{('D', 'P'): '2020-05-07'}
{('I', 'P'): '2020-05-07'}
Я пытался перебирать все дни, но, очевидно, это не сработало:
for pair in colleague_pairs:
for day in working_days:
print({pair:day})
{('C', 'D'): '2020-05-04'}
{('C', 'D'): '2020-05-05'}
{('C', 'D'): '2020-05-06'}
{('C', 'D'): '2020-05-07'}
{('C', 'I'): '2020-05-04'}
{('C', 'I'): '2020-05-05'}
{('C', 'I'): '2020-05-06'}
{('C', 'I'): '2020-05-07'}
{('C', 'P'): '2020-05-04'}
{('C', 'P'): '2020-05-05'}
{('C', 'P'): '2020-05-06'}
{('C', 'P'): '2020-05-07'}
{('C', 'S'): '2020-05-04'}
{('C', 'S'): '2020-05-05'}
{('C', 'S'): '2020-05-06'}
{('C', 'S'): '2020-05-07'}
{('D', 'I'): '2020-05-04'}
{('D', 'I'): '2020-05-05'}
{('D', 'I'): '2020-05-06'}
{('D', 'I'): '2020-05-07'}
{('D', 'P'): '2020-05-04'}
{('D', 'P'): '2020-05-05'}
{('D', 'P'): '2020-05-06'}
{('D', 'P'): '2020-05-07'}
{('I', 'P'): '2020-05-04'}
{('I', 'P'): '2020-05-05'}
{('I', 'P'): '2020-05-06'}
{('I', 'P'): '2020-05-07'}
{('S', 'D'): '2020-05-04'}
{('S', 'D'): '2020-05-05'}
{('S', 'D'): '2020-05-06'}
{('S', 'D'): '2020-05-07'}
{('S', 'I'): '2020-05-04'}
{('S', 'I'): '2020-05-05'}
{('S', 'I'): '2020-05-06'}
{('S', 'I'): '2020-05-07'}
{('S', 'P'): '2020-05-04'}
{('S', 'P'): '2020-05-05'}
{('S', 'P'): '2020-05-06'}
{('S', 'P'): '2020-05-07'}
Я чувствую, что должно быть слово для комбинаций, которые я хочу, но я не могу понять это.
Как мне настроить то, что у меня есть, на то, что мне нужно?