I have a list like this:
<code>list1 = [
{'id': 'ABC', 'created_at': datetime.date(2024, 8, 1, 11, 22, 3)},
{'id': 'ABC', 'created_at': datetime.date(2024, 8, 2, 11, 22, 3)},
{'id': 'ABC', 'created_at': datetime.date(2024, 8, 3, 11, 22, 3)},
{'id': 'ABC', 'created_at': datetime.date(2024, 8, 5, 11, 22, 3)},
{'id': 'BAC', 'created_at': datetime.date(2024, 7, 25, 18, 22, 3)},
{'id': 'BAC', 'created_at': datetime.date(2024, 7, 26, 18, 22, 3)},
{'id': 'BAC', 'created_at': datetime.date(2024, 8, 1, 18, 22, 3)},
{'id': 'BAC', 'created_at': datetime.date(2024, 8, 5, 11, 22, 3)},
{'id': 'CAB', 'created_at': datetime.date(2024, 8, 1, 6, 53, 3)},
{'id': 'CAB', 'created_at': datetime.date(2024, 8, 1, 17, 53, 3)},
{'id': 'CAB', 'created_at': datetime.date(2024, 8, 2, 11, 53, 3)},
{'id': 'CAB', 'created_at': datetime.date(2024, 8, 5, 11, 22, 3)},
]
</code>
<code>list1 = [
{'id': 'ABC', 'created_at': datetime.date(2024, 8, 1, 11, 22, 3)},
{'id': 'ABC', 'created_at': datetime.date(2024, 8, 2, 11, 22, 3)},
{'id': 'ABC', 'created_at': datetime.date(2024, 8, 3, 11, 22, 3)},
{'id': 'ABC', 'created_at': datetime.date(2024, 8, 5, 11, 22, 3)},
{'id': 'BAC', 'created_at': datetime.date(2024, 7, 25, 18, 22, 3)},
{'id': 'BAC', 'created_at': datetime.date(2024, 7, 26, 18, 22, 3)},
{'id': 'BAC', 'created_at': datetime.date(2024, 8, 1, 18, 22, 3)},
{'id': 'BAC', 'created_at': datetime.date(2024, 8, 5, 11, 22, 3)},
{'id': 'CAB', 'created_at': datetime.date(2024, 8, 1, 6, 53, 3)},
{'id': 'CAB', 'created_at': datetime.date(2024, 8, 1, 17, 53, 3)},
{'id': 'CAB', 'created_at': datetime.date(2024, 8, 2, 11, 53, 3)},
{'id': 'CAB', 'created_at': datetime.date(2024, 8, 5, 11, 22, 3)},
]
</code>
list1 = [
{'id': 'ABC', 'created_at': datetime.date(2024, 8, 1, 11, 22, 3)},
{'id': 'ABC', 'created_at': datetime.date(2024, 8, 2, 11, 22, 3)},
{'id': 'ABC', 'created_at': datetime.date(2024, 8, 3, 11, 22, 3)},
{'id': 'ABC', 'created_at': datetime.date(2024, 8, 5, 11, 22, 3)},
{'id': 'BAC', 'created_at': datetime.date(2024, 7, 25, 18, 22, 3)},
{'id': 'BAC', 'created_at': datetime.date(2024, 7, 26, 18, 22, 3)},
{'id': 'BAC', 'created_at': datetime.date(2024, 8, 1, 18, 22, 3)},
{'id': 'BAC', 'created_at': datetime.date(2024, 8, 5, 11, 22, 3)},
{'id': 'CAB', 'created_at': datetime.date(2024, 8, 1, 6, 53, 3)},
{'id': 'CAB', 'created_at': datetime.date(2024, 8, 1, 17, 53, 3)},
{'id': 'CAB', 'created_at': datetime.date(2024, 8, 2, 11, 53, 3)},
{'id': 'CAB', 'created_at': datetime.date(2024, 8, 5, 11, 22, 3)},
]
The list is sorted by id
and created_at
, so it’s not needed to sort again.
If it were one id
with no repeats, I knew I could do this:
<code>output = 'n'.join([f"ID: {l['id']}, Created At: {l['created_at']}" for l in list1])
</code>
<code>output = 'n'.join([f"ID: {l['id']}, Created At: {l['created_at']}" for l in list1])
</code>
output = 'n'.join([f"ID: {l['id']}, Created At: {l['created_at']}" for l in list1])
But regarding the following expected output, I don’t know the how-to:
<code>[
{'id': 'ABC', 'start': datetime.date(2024, 8, 3, 11, 22, 3), 'end': datetime.date(2024, 8, 5, 11, 22, 3)},
{'id' 'BAC', 'start': datetime.date(2024, 8, 1, 18, 22, 3), 'end': datetime.date(2024, 8, 5, 11, 22, 3)},
{'id' 'CAB', 'start': datetime.date(2024, 8, 2, 11, 53, 3), 'end': datetime.date(2024, 8, 5, 11, 22, 3)},
]
</code>
<code>[
{'id': 'ABC', 'start': datetime.date(2024, 8, 3, 11, 22, 3), 'end': datetime.date(2024, 8, 5, 11, 22, 3)},
{'id' 'BAC', 'start': datetime.date(2024, 8, 1, 18, 22, 3), 'end': datetime.date(2024, 8, 5, 11, 22, 3)},
{'id' 'CAB', 'start': datetime.date(2024, 8, 2, 11, 53, 3), 'end': datetime.date(2024, 8, 5, 11, 22, 3)},
]
</code>
[
{'id': 'ABC', 'start': datetime.date(2024, 8, 3, 11, 22, 3), 'end': datetime.date(2024, 8, 5, 11, 22, 3)},
{'id' 'BAC', 'start': datetime.date(2024, 8, 1, 18, 22, 3), 'end': datetime.date(2024, 8, 5, 11, 22, 3)},
{'id' 'CAB', 'start': datetime.date(2024, 8, 2, 11, 53, 3), 'end': datetime.date(2024, 8, 5, 11, 22, 3)},
]
I’m going to print the one before last column date of each id
as start
, and the last one as end
.