HOWTO · Python
Initialiser un dictionnaire Python
Ce tutoriel montre comment initialiser un dictionnaire en python
Sur cette page
Un dictionnaire Python stocke des paires clé-valeur, ce qui permet au programme de retrouver une valeur à partir de sa clé. Choisissez la méthode d’initialisation adaptée à vos données : écrivez un littéral pour des paires connues, utilisez dict() pour des paires fournies ou des arguments nommés, utilisez dict.fromkeys() si plusieurs clés doivent partager une valeur, ou calculez les entrées avec une compréhension. Les exemples ci-dessous montrent le comportement de chaque forme.
Initialiser un dictionnaire avec la syntaxe littérale
Utilisez un littéral de dictionnaire lorsque les clés et les valeurs sont connues dans le code. Placez chaque clé et sa valeur entre accolades, séparées par deux-points, puis séparez les paires par des virgules. Le dictionnaire obtenu contient des clés uniques : si un littéral répète une clé, la dernière valeur qui lui est attribuée est conservée.
Exécutez cet exemple :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
dict1 = {"X": 2, "Y": 3, "Z": 4}
print(dict1)
Cela crée trois clés de type chaîne associées à des valeurs entières. Un littéral est généralement le choix le plus clair pour une correspondance réduite et fixe.
Initialiser un dictionnaire avec le constructeur dict()
Le constructeur dict() accepte des arguments nommés ou un itérable de paires clé-valeur. Les noms des arguments deviennent des clés de type chaîne ; utilisez donc des paires si les clés ne sont pas des identifiants valides ou ne sont pas des chaînes. Par exemple, dict(X=1, Y=2) crée la même correspondance que {"X": 1, "Y": 2}. Pour convertir des paires existantes, transmettez-les sous forme d’itérable, par exemple dict([("X", 1), ("Y", 2)]).
Ce constructeur est pratique lorsque les données sont déjà fournies sous forme de paires. Si une séquence de paires répète une clé, la valeur de la dernière paire est conservée pour cette clé.
Utiliser dict.fromkeys() pour attribuer une valeur par défaut commune à plusieurs clés
dict.fromkeys() crée un nouveau dictionnaire à partir d’un itérable de clés et attribue à chacune la même valeur fournie. Si vous omettez cette valeur, la méthode utilise None, comme dans dict.fromkeys(["X", "Y", "Z"]).
Cette méthode convient aux valeurs par défaut immuables, comme None, 0 ou une chaîne. Soyez prudent avec une valeur mutable, comme une liste : chaque clé fait référence au même objet liste, donc toute modification effectuée par l’intermédiaire d’une clé est visible par les autres. Si chaque clé doit avoir sa propre valeur mutable, utilisez plutôt une compréhension telle que {key: [] for key in keys}.
Construire un dictionnaire à partir de paires ou d’itérables parallèles
Si vos enregistrements contiennent déjà des paires clé-valeur, transmettez directement l’itérable à dict(). Une liste de tuples convient, tout comme un autre itérable dont chaque élément contient deux valeurs : dict([("X", 5), ("Y", 6), ("Z", 8)]).
Lorsque les clés et les valeurs sont stockées séparément, associez-les avec zip(), puis transmettez les paires à dict(). Par exemple, dict(zip(["X", "Y", "Z"], [5, 6, 8])) associe chaque clé à la valeur située à la même position. zip() s’arrête dès que l’un des deux itérables est épuisé ; les éléments supplémentaires de l’itérable le plus long ne sont donc pas inclus. Si une paire obtenue répète une clé, la dernière valeur l’emporte.
Créer un dictionnaire avec une compréhension
Une compréhension de dictionnaire calcule des entrées à partir d’un itérable en une seule expression. Sa forme générale est {key_expression: value_expression for item in iterable}. Par exemple, {name: 0 for name in ["Ada", "Lin"]} attribue à chaque nom une valeur initiale égale à zéro.
Utilisez une compréhension lorsque les clés ou les valeurs sont calculées à partir des données d’entrée, ou lorsque chaque clé doit recevoir sa propre valeur mutable nouvellement créée. Cette méthode équivaut à commencer avec un dictionnaire vide et à attribuer une valeur pour chaque élément dans une boucle. Gardez l’expression simple : une boucle classique est plus facile à lire lorsque la transformation comporte plusieurs étapes.
Ajouter une valeur par défaut pour une clé manquante avec setdefault()
setdefault() s’applique à un dictionnaire existant. Si la clé est présente, la méthode renvoie sa valeur actuelle ; sinon, elle insère la clé avec la valeur par défaut fournie et renvoie cette valeur. Par exemple, counts.setdefault("apples", 0) initialise un compteur manquant tout en préservant un compte existant.
Cette méthode est utile lorsqu’un dictionnaire existe déjà et qu’une clé particulière doit éventuellement être initialisée. Elle ne sert pas à construire une correspondance complète. Pour regrouper des valeurs de façon répétée, utilisez setdefault(key, []) avec précaution : une nouvelle liste est créée à chaque appel, tandis que les appels suivants pour une clé existante renvoient sa liste actuelle. Les appels directs à __setitem__() constituent une solution de bas niveau ; pour définir une seule entrée, une affectation ordinaire telle que mapping[key] = value est plus claire.
Choisir la bonne méthode d’initialisation d’un dictionnaire
Utilisez un littéral pour une petite correspondance dont les paires sont connues à l’avance. Choisissez dict() pour des arguments nommés ou des paires existantes, et associez les itérables parallèles avec zip() lorsque leurs positions correspondent. Utilisez dict.fromkeys() lorsque toutes les clés doivent faire référence à une valeur par défaut commune, en particulier si elle est immuable. Choisissez une compréhension pour calculer des entrées ou créer des valeurs distinctes pour chaque clé. Utilisez setdefault() pour ajouter une valeur par défaut à une clé dans un dictionnaire que vous possédez déjà.