Grouper des emails par domaine
Résoluokchf Messages postés 8 Statut Membre -
Bonjour,
Voila mon exercice python avec son exemple:
Écrire une fonction store_email(liste_mails)
qui reçoit en paramètre une liste d’adresses e-mail et qui renvoie un dictionnaire avec comme clés les domaines des adresses e-mail et comme valeurs les listes d’utilisateurs correspondantes, triées par ordre croissant (UTF-8).
Exemple :
L’appel de la fonction suivant :
mails = [ "jean@profs.ulb", "andre.colon@stud.ulb", "thierry@profs.ulb", "sébastien@prof.ur", "eric.ramzi@stud.ur", "bernard@profs.ulb", "ludo@prof.ur", ] store_email(mails)
... renvoie le dictionnaire :
{ 'prof.ur' : ['ludo', 'sébastien'], 'stud.ulb' : ['andre.colon'], 'profs.ulb' : ['bernard', 'jean', 'thierry'], 'stud.ur' : ['eric.ramzi'] }
Voila mon code :
d=([ "jean@profs.ulb", "andre.colon@stud.ulb", "thierry@profs.ulb", "sébastien@prof.ur", "eric.ramzi@stud.ur", "bernard@profs.ulb", "ludo@prof.ur", ]) s = sorted(d) data = dict({}) for i in range(0,len(d)): data[s[i]]= s[i] print(data)
Je ne comprends vraiment pas comment les clés doivent renvoyer des domaines des adresses emails et les valeurs des listes d'utilisateurs. Comment transformer le paramètre en ça ?
Merci en avance!
- Grouper des emails par domaine
- Ce programme est bloqué par une stratégie de groupe - Forum Windows
- Domaine wifi ✓ - Forum Réseau
- Sortir un pc du domaine ✓ - Forum Windows serveur
- Excel grouper colonnes adjacentes - Forum Excel
- SORTIR UN PC DU DOMAINE - Forum Windows
2 réponses
Bonsoir, cela se fait avec la méthode split de la class str.
mails = [ "jean@profs.ulb", "andre.colon@stud.ulb", "thierry@profs.ulb", "sébastien@prof.ur", "eric.ramzi@stud.ur", "bernard@profs.ulb", "ludo@prof.ur", ] # s = sorted(d) # Inutile # data = dict({}) # Là tu crées un dictionnaire dans un autre dictionnaire data = {} # for i in range(0, len(d)): # Inutile d'utiliser un range, préfère parcourir directement la liste # data[s[i]] = s[i] # print(data) for mail in mails: # Séparation nom d'utilisateur et nom de domaine user_name, domain_name = mail.split('@') # Ajout au dict data data.setdefault(domain_name, []).append(user_name) # Tri de la liste data[domain_name].sort() from pprint import pprint pprint(data)
La liste étant très courte, cela n'a aucune incidence de trier juste après chaque insertion, en revanche avec des centaines, milliers d'entrées, il sera plus performant de trier après avoir insérer toutes les données dans data, avec un parcours donc des listes des valeurs de data.