¿Quién envió más correos?


Descripción

Para probar el programa puedes usar los archivos:

Este programa almacena el nombre de los remitentes que enviaron mensajes e imprime la dirección de correo que envió más correos.

Para hacer esto busca las líneas que comienzan con “From” (ignorando las que empiezan con “From:”, es decir que tienen el símbolo : después de “From”), la segunda palabra en estas líneas es el remitente.

Línea de ejemplo:

From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008

Al final del programa imprime la dirección de correo con más envíos y la cantidad de correos enviados.

Ejemplo de ejecución

Ingresa un nombre de archivo: mbox-short.txt
cwen@iupui.edu 5
Ingresa un nombre de archivo: mbox.txt
zqian@umich.edu 195

Solución

Mostrar solución
mensajes_remitente = {}

nombre_archivo = input('Ingresa un nombre de archivo: ')
with open(nombre_archivo, 'r') as archivo:
  for linea in archivo:
    if linea.startswith('From '):
      remitente = linea.split(' ')[1]
      mensajes_remitente[remitente] = mensajes_remitente.get(remitente, 0) + 1

cantidad_mensajes_remitente = []
for remitente, cantidad in mensajes_remitente.items():
  cantidad_mensajes_remitente.append((cantidad, remitente))

cantidad_mensajes_remitente.sort(reverse=True)

remitente_max = cantidad_mensajes_remitente[0]
print(remitente_max[1], remitente_max[0])

Probar solución en Google Colab

Fuente del ejercicio: https://es.py4e.com/html3/10-tuples