Maison >développement back-end >Tutoriel Python >Comment éviter les références partagées lors de la création de dictionnaires de listes vides en Python ?

Comment éviter les références partagées lors de la création de dictionnaires de listes vides en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-30 18:50:14520parcourir

How to Avoid Shared References When Creating Dictionaries of Empty Lists in Python?

Comprendre les défis liés à la création de dictionnaires de listes vides

En Python, créer un dictionnaire de listes vides peut être délicat en raison de la référence partagée de l'objet liste lors de l'utilisation de dict.fromkeys(). Tentative d'ajout d'un élément à une clé, met à jour toutes les clés avec le même élément en raison de la référence.

Comportement de la méthode Fromkeys

Lorsque le deuxième argument de dict.fromkeys (), une liste vide dans ce cas, est transmise, toutes les valeurs du dictionnaire résultant partagent la même référence à l'objet liste. Toute modification apportée à une clé affecte toutes les autres clés.

Solutions alternatives

Pour éviter ce problème, des solutions alternatives existent :

  • Compréhension des dictés (Python 2.7 et ci-dessus) :
data = {k: [] for k in range(2)}

Cela crée un dictionnaire dans lequel chaque clé a sa propre liste vide et unique.

  • Compréhension de liste avec le constructeur Dict (Versions Python antérieures à 2.7) :
data = dict([(k, []) for k in range(2)])

Cela permet d'obtenir le même résultat comme compréhension de dict en convertissant la compréhension de liste en dictionnaire.

  • Expression génératrice avec constructeur Dict (Python 2.4-2.6) :
data = dict((k, []) for k in range(2))

Dans cette version, une expression génératrice est transmise directement au constructeur dict, en contournant l'étape de compréhension de la liste. Les parenthèses entourant l'expression peuvent être omises.

En utilisant ces méthodes alternatives, des dictionnaires de listes vides peuvent être créés correctement, permettant la manipulation de clés individuelles sans affecter les autres clés.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn