E
Size: a a a
E
AZ
times_data = [
{'start': '08:00', 'end': '12:00'},
{'start': '13:00', 'end': '17:00'},
]
times_off_data = [
{'start': '08:00', 'end': '09:00'},
{'start': '11:00', 'end': '16:00'},
]
times = [
{'start': '09:00', 'end': '10:00'},
{'start': '16:00', 'end': '17:00'}
]
Б
Б
АП
A
times_off_data = [
('off_start', '07:00'), ('off_end', '09:00'),
('off_start', '10:00'), ('off_end', '16:00'),
]
times_data = [
('start', '08:00'), ('end', '12:00'),
('start', '13:00'), ('end', '17:00'),
]
data_ = times_data + times_off_data
data = list(sorted(data_, key=lambda x: x[1]))
results = []
saved = dict()
f = 0
for t in data:
if t[0] in ['start', 'off_end']:
saved['start'] = t[1]
f = 0
elif t[0] in ['end']:
saved['end'] = t[1]
if all([saved.get('end'), saved.get('start')]) and saved.get('end') > saved['start'] and not f:
results.append(dict(saved))
else:
saved['end'] = t[1]
f = 1
if all([saved.get('end'), saved.get('start')]) and saved.get('end') > saved['start']:
results.append(dict(saved))
print(results)
f
) и проверять, что end > start
, чтобы не сохранять отрезки вида {'start': '08:00', 'end': '08:00'}
.p
times_off_data = [
('off_start', '07:00'), ('off_end', '09:00'),
('off_start', '10:00'), ('off_end', '16:00'),
]
times_data = [
('start', '08:00'), ('end', '12:00'),
('start', '13:00'), ('end', '17:00'),
]
data_ = times_data + times_off_data
data = list(sorted(data_, key=lambda x: x[1]))
results = []
saved = dict()
f = 0
for t in data:
if t[0] in ['start', 'off_end']:
saved['start'] = t[1]
f = 0
elif t[0] in ['end']:
saved['end'] = t[1]
if all([saved.get('end'), saved.get('start')]) and saved.get('end') > saved['start'] and not f:
results.append(dict(saved))
else:
saved['end'] = t[1]
f = 1
if all([saved.get('end'), saved.get('start')]) and saved.get('end') > saved['start']:
results.append(dict(saved))
print(results)
f
) и проверять, что end > start
, чтобы не сохранять отрезки вида {'start': '08:00', 'end': '08:00'}
.AZ
AZ
times_off_data = [
('off_start', '07:00'), ('off_end', '09:00'),
('off_start', '10:00'), ('off_end', '16:00'),
]
times_data = [
('start', '08:00'), ('end', '12:00'),
('start', '13:00'), ('end', '17:00'),
]
data_ = times_data + times_off_data
data = list(sorted(data_, key=lambda x: x[1]))
results = []
saved = dict()
f = 0
for t in data:
if t[0] in ['start', 'off_end']:
saved['start'] = t[1]
f = 0
elif t[0] in ['end']:
saved['end'] = t[1]
if all([saved.get('end'), saved.get('start')]) and saved.get('end') > saved['start'] and not f:
results.append(dict(saved))
else:
saved['end'] = t[1]
f = 1
if all([saved.get('end'), saved.get('start')]) and saved.get('end') > saved['start']:
results.append(dict(saved))
print(results)
f
) и проверять, что end > start
, чтобы не сохранять отрезки вида {'start': '08:00', 'end': '08:00'}
.AZ
times_off_data = [
('off_start', '07:00'), ('off_end', '09:00'),
('off_start', '10:00'), ('off_end', '16:00'),
]
times_data = [
('start', '08:00'), ('end', '12:00'),
('start', '13:00'), ('end', '17:00'),
]
data_ = times_data + times_off_data
data = list(sorted(data_, key=lambda x: x[1]))
results = []
saved = dict()
f = 0
for t in data:
if t[0] in ['start', 'off_end']:
saved['start'] = t[1]
f = 0
elif t[0] in ['end']:
saved['end'] = t[1]
if all([saved.get('end'), saved.get('start')]) and saved.get('end') > saved['start'] and not f:
results.append(dict(saved))
else:
saved['end'] = t[1]
f = 1
if all([saved.get('end'), saved.get('start')]) and saved.get('end') > saved['start']:
results.append(dict(saved))
print(results)
f
) и проверять, что end > start
, чтобы не сохранять отрезки вида {'start': '08:00', 'end': '08:00'}
.p
times_off_data = [
('off_start', '07:00'), ('off_end', '09:00'),
('off_start', '10:00'), ('off_end', '16:00'),
]
times_data = [
('start', '08:00'), ('end', '12:00'),
('start', '13:00'), ('end', '17:00'),
]
data_ = times_data + times_off_data
data = list(sorted(data_, key=lambda x: x[1]))
results = []
saved = dict()
f = 0
for t in data:
if t[0] in ['start', 'off_end']:
saved['start'] = t[1]
f = 0
elif t[0] in ['end']:
saved['end'] = t[1]
if all([saved.get('end'), saved.get('start')]) and saved.get('end') > saved['start'] and not f:
results.append(dict(saved))
else:
saved['end'] = t[1]
f = 1
if all([saved.get('end'), saved.get('start')]) and saved.get('end') > saved['start']:
results.append(dict(saved))
print(results)
f
) и проверять, что end > start
, чтобы не сохранять отрезки вида {'start': '08:00', 'end': '08:00'}
.BK
G
BK
A
saved
удобно делать проверки, чтобы не добавлять лишнее в results
. А как можно без предварительного сохранения start
и end
сделать, пока не могу сообразить.A
saved
удобно делать проверки, чтобы не добавлять лишнее в results
. А как можно без предварительного сохранения start
и end
сделать, пока не могу сообразить.times_off_data = [Еще было бы круче, если бы можно было отсортировать так, чтобы было чередование
('off_start', '07:00'), ('off_end', '09:00'),
('off_start', '10:00'), ('off_end', '16:00'),
]
times_data = [
('start', '08:00'), ('end', '12:00'),
('start', '13:00'), ('end', '17:00'),
]
data_ = times_data + times_off_data
data = list(sorted(data_, key=lambda x: (x[1])))
results = []
for i in range(len(data) - 1):
start = data[i]
end = data[i + 1]
start_time = start[1]
end_time = end[1]
is_start = start[0] in ['start', 'off_end']
is_end = end[0] in ['off_start', 'end']
if all([is_end, is_start, (end_time > start_time)]):
results.append({'start': start_time, 'end': end_time})
print(results)
start
и end
. Тогда просто в цикле проверять, что end > start
.p
times_off_data = [Еще было бы круче, если бы можно было отсортировать так, чтобы было чередование
('off_start', '07:00'), ('off_end', '09:00'),
('off_start', '10:00'), ('off_end', '16:00'),
]
times_data = [
('start', '08:00'), ('end', '12:00'),
('start', '13:00'), ('end', '17:00'),
]
data_ = times_data + times_off_data
data = list(sorted(data_, key=lambda x: (x[1])))
results = []
for i in range(len(data) - 1):
start = data[i]
end = data[i + 1]
start_time = start[1]
end_time = end[1]
is_start = start[0] in ['start', 'off_end']
is_end = end[0] in ['off_start', 'end']
if all([is_end, is_start, (end_time > start_time)]):
results.append({'start': start_time, 'end': end_time})
print(results)
start
и end
. Тогда просто в цикле проверять, что end > start
.A
p
A