I have a list named list_a, as per below (record_details is document number, cabinet_number is where the document is placed, and created_at would be when the document is placed in epoch format):
list_a = [{
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663559616
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663559311
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663559006
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663558701
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663558396
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663558091
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663557786
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB4',
'created_at': 1663557481
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB17',
'created_at': 1663557176
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB17',
'created_at': 1663556871
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB17',
'created_at': 1663556566
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB17',
'created_at': 1663556261
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB5',
'created_at': 1663555956
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB17',
'created_at': 1663555651
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB17',
'created_at': 1663555346
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663555041
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663554736
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663554431
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663554126
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663553821
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663553516
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663553211
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663552906
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663552601
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663552296
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663551992
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663551688
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663551384
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663551080
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663550776
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663550471
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663550166
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663549861
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663549556
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663549255
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663548949
}]
The outcome I'm trying to achieve with this list would be like below (unique cabinet_number, and the total duration when the document is placed within that particular cabinet):
[{
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'duration': 1830
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB4',
'duration': 305
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB17',
'duration': 915
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB5',
'duration': 305
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB17',
'duration': 305
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'duration': 6092
}]
What I've tried so far:
list_b = []
for idx, ele in enumerate(list_a):
if idx == 0:
ele['time_difference'] = 0
else:
ele['time_difference'] = list_a[idx-1]['created_at'] - ele['created_at']
for idx, ele in enumerate(list_a):
if idx == 0:
ele['cabinet_number_cumulative'] = ele['cabinet_number']
if idx > 0 and ele['cabinet_number'] != list_a[idx-1]['cabinet_number']:
ele['cabinet_number_cumulative'] = ele['cabinet_number']
if idx > 0 and ele['cabinet_number'] == list_a[idx-1]['cabinet_number']:
ele['cabinet_number_cumulative'] = ''
ele['duration'] = ele['time_difference'] + list_a[idx-1]['time_difference']
for idx, ele in enumerate(list_a):
if ele['cabinet_number_cumulative'] != '':
list_b.append(ele)
print(list_b)
I manage to get the unique cabinet_number combined together within list_b in order, however, I'm quite lost on the cumulative duration part.
[{
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663559616,
'time_difference': 0,
'cabinet_number_cumulative': 'LOADCAB1'
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB4',
'created_at': 1663557481,
'time_difference': 305,
'cabinet_number_cumulative': 'LOADCAB4'
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB17',
'created_at': 1663557176,
'time_difference': 305,
'cabinet_number_cumulative': 'LOADCAB17'
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB5',
'created_at': 1663555956,
'time_difference': 305,
'cabinet_number_cumulative': 'LOADCAB5'
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB17',
'created_at': 1663555651,
'time_difference': 305,
'cabinet_number_cumulative': 'LOADCAB17'
}, {
'record_details': '000000004C',
'cabinet_number': 'LOADCAB1',
'created_at': 1663555041,
'time_difference': 305,
'cabinet_number_cumulative': 'LOADCAB1'
}]
Any help or guidance is very much appreciated.