from typing import List from million.model.message import Message from million.model.participant import Participant def count_participations(messages: List[Message], participants: List[Participant]): """ Count the number of messages sent by each participant """ participations = {} for participant in participants: participations[participant.name] = 0 for message in messages: if message.sender_name not in participations: participations[message.sender_name] = 1 else: participations[message.sender_name] += 1 ordered_participations = sorted( participations.items(), key=lambda x: x[1], reverse=True) return [{"name": v[0], "participations": v[1]} for v in ordered_participations]