Python

dict par défaut Python

dict par défaut Python

Python offre de nombreuses structures de données intégrées, telles que des listes, des tuples et des dictionnaires, pour enregistrer et gérer efficacement les données. Les dictionnaires offrent un moyen simple d'enregistrer des données sous forme de paires clé-valeur. Une clé agit comme un index et est utilisée pour récupérer des données. Les clés doivent être uniques et immuables dans tout le dictionnaire. Les clés sont principalement des chaînes et des entiers, bien que la valeur d'une clé puisse être de n'importe quel type, comme un entier, une chaîne, un nombre à virgule flottante ou un nombre complexe. Pendant ce temps, un dictionnaire peut contenir une collection, telle qu'une liste, un tuple ou un autre type de dictionnaire. Un dictionnaire en Python est créé à l'aide d'une paire d'accolades, dans laquelle chaque paire clé-valeur est séparée par une virgule.

Que faire si vous essayez d'accéder ou de modifier une clé spécifique dans un dictionnaire qui n'existe pas? Eh bien, dans ce cas, l'interpréteur Python lèvera l'erreur "KeyError" et terminera l'exécution du programme.

Regardons un exemple de l'erreur "KeyError".

#créer un dictionnaire
my_dict= 1:"Bonjour",2:"Bienvenue",3:"LinuxHint"
#accès à une clé qui n'existe pas
mon_dict[4]

Production

Pour gérer cette erreur, Python fournit le type defaultdict, une classe de dictionnaire que l'on peut trouver dans le module collections. Cet article couvre le defaultdict Python en détail.

Explication et exemples de defaultdict

Le defaultdict est l'alternative du dictionnaire Python. Il renvoie des objets de type dictionnaire. Le defaultdict est une sous-classe de dict. Dans le cas d'une clé manquante, plutôt que de générer une erreur « KeyError », la valeur par défaut est fournie pour la clé inexistante. La syntaxe de defaultdict est la suivante :

defaultdict(default_factory)

La fonction defaultdict prend le paramètre default_factory comme argument. La fonction default_factory renvoie la valeur par défaut pour le defaultdict défini. Si nous essayons d'accéder ou de modifier une clé manquante, la fonction default_factory renvoie la valeur par défaut comme résultat. Si la fonction default_factory est manquante, le defaultdic générera une erreur "KeyError" s'il y a des clés manquantes.

Tout d'abord, nous allons implémenter un defaultdic dans notre script Python pour accéder à la fois aux clés existantes et manquantes.

#importer le defaultdict du module de collection
à partir des collections importer defaultdict
#définir une fonction pour renvoyer la valeur par défaut
def my_func() :
print("La clé n'est pas définie")
#créer un defualtdict
#passer my_func() comme argument à defaultdict
my_dict =defaultdict(my_func)
#définir les clés et les valeurs
my_dict[1]="Bonjour"
my_dict[2]="Bienvenue"
my_dict[3]="LinuxHint"
#accès aux valeurs à l'aide de clés
imprimer(mon_dict[1])
imprimer(mon_dict[2])
print(my_dict[3])
#accès à la clé manquante ou non définie
mon_dict[4]

Production

Le [4] est la clé manquante. Ainsi, au lieu de générer une erreur "KeyError", il appelle la fonction default_factory, qui renvoie la valeur par défaut.


Une fonction lambda, appelée fonction anonyme, peut également être utilisée comme paramètre default_factory.

Ensuite, nous allons implémenter une fonction lambda et la passer en argument au defaultdict.

#importer le defaultdict du module de collection
à partir des collections importer defaultdict
#créer un defualtdict
#passer la fonction Lamnda comme argument à defaultdict
my_dict =defaultdict(lambda:"La clé n'est pas définie")
#définir les clés et les valeurs
my_dict[1]="Bonjour"
my_dict[2]="Bienvenue"
my_dict[3]="LinuxHint"
#accès aux valeurs à l'aide de clés
imprimer(mon_dict[1])
imprimer(mon_dict[2])
print(my_dict[3])
#accès à la clé manquante ou non définie
imprimer(mon_dict[4])

Le defaultdict appelle le default_factory pour fournir la valeur par défaut, mais la fonction __missing()__ fournit la valeur par défaut. La fonction __missing()__ est une fonction intégrée à Python qui prend le paramètre default_factory comme argument. Si le paramètre default_factory n'est pas défini, la fonction __missing()__ génère l'erreur « KeyError ».

Ici, nous utiliserons la fonction __missing()__ dans notre script Python.

#importer le defaultdict du module de collection
à partir des collections importer defaultdict
#définir une fonction pour renvoyer la valeur par défaut
def my_func() :
print("La clé n'est pas définie")
#créer un defualtdict
#passer my_func() comme argument à defaultdict
my_dict =defaultdict(my_func)
#définir les clés et les valeurs
my_dict[1]="LinuxHint"
#accès aux valeurs à l'aide de clés
imprimer(mon_dict[1])
#accès à la clé manquante ou non définie
mon_dict.__manquant__(2)

Production

Les classes list et int peuvent également être utilisées comme paramètres default_factory avec defaultdict.

Liste en tant que paramètre default_factory

Le defaultdict est créé avec les valeurs de la liste lorsque la classe de liste reçoit un paramètre default_factory.

#importer le defaultdict du module de collection
à partir des collections importer defaultdict
# définir un defaultdict
# classe de liste de passage en tant que default_factory
my_dict = defaultdict (liste)
pour i dans la plage (7) :
mon_dict[i].ajouter (i)
#impression des valeurs
imprimer(mon_dict)

Production

La sortie affiche les valeurs dans la liste. Comme vous pouvez le voir, un defaultdict qui contient la clé et les valeurs a été créé.

Entiers comme paramètre default_factory

Si nous passons la classe int en tant que paramètre default_factory, alors nous pouvons créer un defaultdict qui ne contient que des entiers. Nous allons créer une liste d'entiers, puis l'enregistrer dans le defaultdict.

#importer le defaultdict du module de collection
à partir des collections importer defaultdict
# définir un defaultdict
# passer la classe int comme default_factory
my_dict = defaultdict(int)
#créer une liste d'entiers
ma_liste=[1,2,3]
pour moi dans ma_liste :
mon_dict[i]+=1
#impression des valeurs
imprimer(mon_dict)

Production

Dans la sortie donnée, les valeurs entières avant les deux points (:) sont des clés, tandis que les valeurs entières après les deux points sont des valeurs.

Conclusion

Le dafualtdict est une classe de type dictionnaire présente dans le module collections. Il fonctionne comme un dictionnaire Python mais ne génère pas de "KeyError" lorsqu'une clé n'est pas trouvée. Cet article explique le defaultdict en détail avec divers exemples.

SuperTuxKart pour Linux
SuperTuxKart est un excellent titre conçu pour vous apporter l'expérience Mario Kart gratuitement sur votre système Linux. C'est assez stimulant et am...
Tutoriel Bataille pour Wesnoth
The Battle for Wesnoth est l'un des jeux de stratégie open source les plus populaires auxquels vous pouvez jouer en ce moment. Non seulement ce jeu es...
0 A.ré. Didacticiel
Sur les nombreux jeux de stratégie disponibles, 0 A.ré. parvient à se démarquer comme un titre complet et un jeu tactique très profond bien qu'il soit...