Exercice 30 || Solution
Concevoir une fonction Python qui prend en entrée un dictionnaire de personnes avec leur pays de résidence, et renvoie un dictionnaire regroupant les personnes par pays.
Exemple pour le dictionnaire suivant:
1 2 3 4 5 6 7 8 9 10 |
personnes = { 'Walid' : 'Maroc', 'Adam': 'France', 'Bob': 'USA', 'Najat' : 'Maroc', 'Charlie': 'France', 'David': 'Canada', 'Farid' : 'France', 'Eva': 'USA' } |
La fonction doit renvoyer le dictionnaire:
1 2 3 |
{'Maroc': ['Walid', 'Najat'], 'France': ['Adam', 'Charlie', 'Farid'], 'USA': ['Bob', 'Eva'], 'Canada': ['David']} |
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
def regrouper_par_pays(personnes): # initialisation du dictionnaire demandé personnes_par_pays = {} # Parcourir le dictionnaire for personne, pays in personnes.items(): if pays in personnes_par_pays: """ # si la clé pays a été déjà ajouté au dictionnaire personnes_par_pays on ajoute 'personne' à la liste des valeurs """ personnes_par_pays[pays].append(personne) else: """ # si la clé pays n'a pas été ajouté au dictionnaire personnes_par_pays on ajoute la paire clé valeur pays:personne au dictionnaire """ personnes_par_pays[pays] = [personne] return personnes_par_pays # Exemple d'utilisation personnes = { 'Walid' : 'Maroc', 'Adam': 'France', 'Bob': 'USA', 'Najat' : 'Maroc', 'Charlie': 'France', 'David': 'Canada', 'Farid' : 'France', 'Eva': 'USA' } resultat = regrouper_par_pays(personnes) print(resultat) """ output: {'Maroc': ['Walid', 'Najat'], 'France': ['Adam', 'Charlie', 'Farid'], 'USA': ['Bob', 'Eva'], 'Canada': ['David']} """ |
Younes Derfoufi
CRMEF OUJDA