Maison >développement back-end >Tutoriel Python >Comment initialiser correctement un dictionnaire de listes vides en Python ?
Approches pour initialiser un dictionnaire de listes vides en Python
La création d'un dictionnaire de listes en Python peut être réalisée en utilisant diverses méthodes. Cependant, si vous tentez d'utiliser la méthode dict.fromkeys(), vous risquez de rencontrer un problème où la mise à jour d'une clé individuelle modifie également toutes les autres clés du dictionnaire.
Comprendre le dict.fromkeys( ) Méthode
La méthode dict.fromkeys() en Python initialise un nouveau dictionnaire avec les clés spécifiées par le premier argument. La valeur associée à chaque clé est le deuxième argument, qui est par défaut Aucun. Lorsqu'une liste vide [] est fournie comme deuxième argument, toutes les valeurs du dictionnaire résultant font référence au même objet de liste. Ce comportement conduit au résultat inattendu mentionné dans la question.
Méthodes alternatives d'initialisation
Pour éviter le problème susmentionné, des approches alternatives peuvent être utilisées :
1. Compréhension de dict (Python 2.7 et versions ultérieures)
data = {key: [] for key in range(2)}
Cette approche utilise une compréhension de dictionnaire pour créer un nouveau dictionnaire où chaque clé est mappée sur une liste vide.
2. Compréhension de liste (Python 2.4-2.6)
data = dict([(key, []) for key in range(2)])
Dans ce cas, une compréhension de liste est utilisée pour générer une liste de tuples, où chaque tuple se compose d'une clé et d'une liste vide. La liste des tuples est ensuite transmise au constructeur dict pour créer le dictionnaire.
3. Expression génératrice (Python 2.4-2.6)
data = dict((key, []) for key in range(2))
Semblable à l'approche de compréhension de liste, une expression génératrice peut être utilisée directement dans le constructeur dict, éliminant ainsi le besoin de parenthèses environnantes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!