Grouper des emails par domaine
Résoluokchf Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
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!
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.
-
Merci beaucoup pour votre effort. Vous m'aidez vraiment beaucoup à mieux comprendre.