1
我和日期列表: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 2015-02-12 09:23:24