pythonutilisateurs = [
("Dupont", "Alice", 25, "admin"),
("Martin", "Bob", 30, "utilisateur"),
("Durand", "Charlie", 22, "technicien"),
("Petit", "Diane", 28, "admin"),
("Leroy", "Eve", 35, "utilisateur"),
]
# 1. Afficher les utilisateurs d'un rôle
def afficher_utilisateurs_role(role):
for nom, prenom, age, r in utilisateurs:
if r == role:
print(f"{prenom} {nom} ({age} ans)")
# 2. La liste des rôles, sans doublon
def liste_des_roles():
roles = set()
for utilisateur in utilisateurs:
roles.add(utilisateur[3]) # le rôle est le 4e élément
return sorted(roles)
# 3. Regrouper par rôle
def grouper_par_role():
groupes = {}
for nom, prenom, age, role in utilisateurs:
if role not in groupes:
groupes[role] = [] # on crée la liste au premier venu
groupes[role].append(f"{prenom} {nom}")
return groupes
résultat>>> afficher_utilisateurs_role("admin")
Alice Dupont (25 ans)
Diane Petit (28 ans)
>>> liste_des_roles()
['admin', 'technicien', 'utilisateur']
>>> grouper_par_role()
{'admin': ['Alice Dupont', 'Diane Petit'],
'utilisateur': ['Bob Martin', 'Eve Leroy'],
'technicien': ['Charlie Durand']}
🧰 Le déballage de tuple
pythonfor nom, prenom, age, r in utilisateurs: # déballage : 4 variables d'un coup
for utilisateur in utilisateurs: # ou par indice
nom = utilisateur[0]
role = utilisateur[3]
La première forme est bien plus lisible : les noms des variables documentent
la structure. Avec la seconde, il faut se souvenir que « 3 » veut dire « le rôle » —
et c'est ainsi qu'on se trompe de colonne.
⚠️ Créer la liste avant d'y ajouter
pythongroupes[role].append(nom) # ✘ KeyError au tout premier utilisateur
if role not in groupes:
groupes[role] = [] # ✔ on crée d'abord la liste vide
groupes[role].append(nom)
Un dictionnaire ne devine pas qu'une clé doit contenir une liste. Python offre un
raccourci pour ce motif très courant :
pythongroupes.setdefault(role, []).append(nom)
« Donne-moi la liste de ce rôle, et si elle n'existe pas, crée-la vide. »
🌍 Pourquoi un tuple plutôt qu'une liste ici
Un utilisateur a une structure fixe : toujours nom, prénom, âge, rôle,
dans cet ordre. Le tuple l'exprime — on ne peut pas le modifier par
accident. Une liste d'utilisateurs, en revanche, doit pouvoir grandir : d'où
une liste de tuples.
Dans un vrai programme, on irait plus loin avec un dictionnaire par
utilisateur ({"nom": "Dupont", "role": "admin"}) : plus verbeux, mais on
ne compte plus les positions.