У меня есть список с датами:Python список сравнения даты диапазоны
dates = [
{'start': 2015-02-12 08:30, 'end': 2015-02-12 13:30, 'name': 'a'},
{'start': 2015-02-12 09:00, 'end': 2015-02-12 11:45, 'name': 'b'},
{'start': 2015-02-12 09:30, 'end': 2015-02-12 10:30, 'name': 'c'},
{'start': 2015-02-12 10:30, 'end': 2015-02-12 17:30, 'name': 'd'},
{'start': 2015-02-12 11:00, 'end': 2015-02-12 20:30, 'name': 'e'},
{'start': 2015-02-12 12:30, 'end': 2015-02-12 18:30, 'name': 'f'},
]
И мне нужно, чтобы получить выход (объединить эти даты с интервалом), как это:
output = [
{'start': 2015-02-12 08:30, 'end': 2015-02-12 09:00, 'name': 'a'},
{'start': 2015-02-12 09:00, 'end': 2015-02-12 09:30, 'name': 'a + b'},
{'start': 2015-02-12 09:30, 'end': 2015-02-12 10:30, 'name': 'a + b + c'},
{'start': 2015-02-12 10:30, 'end': 2015-02-12 11:00, 'name': 'a + b + d'},
{'start': 2015-02-12 11:00, 'end': 2015-02-12 11:45, 'name': 'a + b + d + e'},
{'start': 2015-02-12 11:45, 'end': 2015-02-12 12:30, 'name': 'a + d + e'},
{'start': 2015-02-12 12:30, 'end': 2015-02-12 13:30, 'name': 'a + d + e + f'},
{'start': 2015-02-12 13:30, 'end': 2015-02-12 17:30, 'name': 'd + e + f '},
{'start': 2015-02-12 17:30, 'end': 2015-02-12 18:30, 'name': 'e + f'},
{'start': 2015-02-12 18:30, 'end': 2015-02-12 20:30, 'name': 'f'},
]
Каждый выход start
и end
даты должны идти в последовательности, если один элемент start
и end
дата пересекает друг друга, они должны быть объединены.
Я пытался использовать цикл в цикле
for x, left in enumerate(dates):
for y, right in enumerate(dates):
# HERE GOES THE LOGIC..
# Tried to compare each X and Y item with each other
# But don't know how to keep used items "in mind"
# And then create new list to output
continue
Но не найти решение, чтобы решить эту проблему. Я жду ответа на помощь, спасибо.
благодарит @FMc за ответ, это было действительно полезно. – gordon33