Вы можете создать dict с незавершенными сообщениями, проверяя, присутствует ли «FROM». Если да, добавьте сообщение, в противном случае просто добавьте его:
def unify_messages(messages):
unified_msgs = {}
for message in messages:
if message['FROM'] in unified_msgs:
unified_msgs[message['FROM']]['MESSAGE'].extend(message['MESSAGE'])
else:
unified_msgs[message['FROM']] = message
return [v for v in unified_msgs.values()]
for message in messages:
unified_messages = unify_messages(messages)
Если вы попробуете с:
messages = [
[
{
"TO":"nathanoluwaseyi@gmail.com",
"FROM":"johndoe@gmail.com",
"SUBJECT":"This is the subject 1",
"MESSAGE":[
"First Message"
],
"NAME":"John Doe",
"DATE":"2019-08-18 19:48:10"
},
{
"TO":"nathanoluwaseyi@gmail.com",
"FROM":"johndoe@gmail.com",
"SUBJECT":"This is the subject 2",
"MESSAGE":[
"Second message"
],
"NAME":"John Doe",
"DATE":"2019-08-18 19:48:10"
},
{
"TO":"nathanoluwaseyi@gmail.com",
"FROM":"alice@gmail.com",
"SUBJECT":"This is the subject 1",
"MESSAGE":[
"First Message from alice"
],
"NAME":"John Doe",
"DATE":"2019-08-18 19:48:10"
},
{
"TO":"nathanoluwaseyi@gmail.com",
"FROM":"sam@gmail.com",
"SUBJECT":"This is the subject 1",
"MESSAGE":[
"First Message from sam"
],
"NAME":"John Doe",
"DATE":"2019-08-18 19:48:10"
},
]
]
Вы получите:
[{'DATE': '2019-08-18 19:48:10',
'FROM': 'johndoe@gmail.com',
'MESSAGE': ['First Message', 'Second message'],
'NAME': 'John Doe',
'SUBJECT': 'This is the subject 1',
'TO': 'nathanoluwaseyi@gmail.com'},
{'DATE': '2019-08-18 19:48:10',
'FROM': 'alice@gmail.com',
'MESSAGE': ['First Message from alice'],
'NAME': 'John Doe',
'SUBJECT': 'This is the subject 1',
'TO': 'nathanoluwaseyi@gmail.com'},
{'DATE': '2019-08-18 19:48:10',
'FROM': 'sam@gmail.com',
'MESSAGE': ['First Message from sam'],
'NAME': 'John Doe',
'SUBJECT': 'This is the subject 1',
'TO': 'nathanoluwaseyi@gmail.com'}]