Не в восторге от такого подхода, но он вас туда доставит. Он перебирает список диктов lst
, используя defaultdict
для группировки по значению mid
, затем перебирает , что , для получения выходных данных, объединяя значения msg
и antivirus
ключи.
from collections import defaultdict
lst = [{'mid': 123, 'msg': 'sometext', 'antivirus': 'positive'},
{'mid': 123, 'msg': 'sometext2', 'antivirus': 'positive'},
{'mid': 456, 'msg': 'sometext3', 'antivirus': 'positive'},
{'mid': 456, 'msg': 'sometext4', 'antivirus': 'positive'},
{'mid': 789, 'msg': 'sometext5', 'antivirus': 'positive'}]
dd = defaultdict(list)
for d in lst:
key = d['mid']
dd[key].append(d)
output = []
for (k,v) in dd.items():
output.append({
'mid': k,
'msg': ','.join(x['msg'] for x in v),
'antivirus': ','.join(x['antivirus'] for x in v),
})
print(output)
[
{'mid': 123, 'msg': 'sometext,sometext2', 'antivirus': 'positive,positive'},
{'mid': 456, 'msg': 'sometext3,sometext4', 'antivirus': 'positive,positive'},
{'mid': 789, 'msg': 'sometext5', 'antivirus': 'positive'}
]