L'objectif de cet exercice est de créer une structure de données qui fait correspondre les IDs d'utilisateurs (des entiers) aux noms d'utilisateurs, en utilisant un defaultdict.
Mais si un ID d'utilisateur n'est pas présent dans la structure de données, sa recherche doit retourner la chaîne exacte "Anonyme", comme solution de repli.
Par exemple :
users = users()
users[3] = "John"
assert users[3] == "John"
assert users[9762] == "Anonyme"
Complétez le code de la fonction users() pour qu'elle renvoie un tel defaultdict personnalisé.
-
Pensez à utiliser
defaultdictpour gérer les valeurs par défaut de manière automatique. -
La fonction lambda permet de définir dynamiquement la valeur de retour pour les clés non existantes.
code Code
from collections import defaultdict
def users():
return defaultdict(lambda: "Anonyme")
comment Explications
La fonction users crée et retourne un defaultdict.
Le comportement par défaut de ce defaultdict est personnalisé de sorte que toute tentative d'accéder à une clé non existante retourne la chaîne de caractères "Anonyme".
On commence donc par importer defaultdict depuis le module collections.
Pour indiquer la valeur par défaut à retourner, on utilise une fonction anonyme (lambda).
En effet, la valeur par défaut doit être une fonction qui sera appelée pour générer une clé par défaut.
-
Le
defaultdictest initialisé avec une fonction lambda qui ne prend aucun argument et retourne la chaîne"Anonyme". -
Cette fonction lambda est appelée chaque fois qu'une clé inexistante est requise, permettant ainsi de retourner
"Anonyme"pour toute clé non définie dans le dictionnaire.
À noter
Il est possible d'utiliser une fonction "classique" à la place du fonction lambda, mais ça complexifie le code. Les fonctions anonymes sont un bon moyen ici d'alléger le code.
Sans les fonctions anonymes, le code ressemblerait à :
from collections import defaultdict
def generate_anonymous_user():
return "Anonyme"
def users():
return defaultdict(generate_anonymous_user)
star Points importants
-
defaultdictpermet de spécifier une valeur par défaut qui est retournée pour les clés manquantes. -
Cette valeur par défaut doit être une fonction qui sera appelée pour générer une clé par défaut.
-
Utiliser une fonction lambda comme factory pour les valeurs par défaut est une méthode flexible pour initialiser des entrées de
defaultdictet éviter de devoir créer une fonction uniquement dédiée à cet usage.
def users():
passfrom collections import defaultdict
def users():
return defaultdict(lambda: "Anonyme")Console
Un instant...
Résultats
Test de la structure de données générée
datastructure = users() assert datastructure[3] == "Anonyme", "Doit retourner 'Anonyme' pour les clés non existantes." datastructure[3] = "John" assert datastructure[3] == "John", "Doit retourner la valeur assignée à la clé 3." assert datastructure[9762] == "Anonyme", "Doit retourner 'Anonyme' pour une clé non définie."
Bravo, tu as réussi cet exercice de code 🥳
Envoyer ma solution
Vous avez trouvé une solution alternative pour cet exercice ? Proposez votre solution à la communauté 👇
Ma solution :


