Maison >développement back-end >Tutoriel Python >Comment puis-je créer un defaultdict infiniment imbriqué en Python ?

Comment puis-je créer un defaultdict infiniment imbriqué en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-24 04:35:11620parcourir

How Can I Create an Infinitely Nested defaultdict in Python?

Defaultdicts imbriqués à l'infini

Question

Comment peut-on créer un defaultdict imbriqué à l'infini ? En d’autres termes, est-il possible de définir la valeur par défaut d’un defaultdict sur un autre defaultdict ? Cela permettrait des structures imbriquées de profondeur arbitraire qui créent automatiquement les dictionnaires nécessaires selon les besoins.

Par exemple, considérons le code suivant :

x = defaultdict(...stuff...)
x[0][1][0]
{}

Dans ce scénario, x[0] serait un defaultdict, x[0][1] serait un autre defaultdict, et x[0][1][0] serait un standard dictionnaire.

Réponse

Bien qu'il soit possible de créer un defaultdict qui contient d'autres defaultdicts, il n'est pas directement pris en charge par les arguments standard defaultdict. Cependant, il existe une solution de contournement simple qui permet des dicts par défaut imbriqués à plusieurs niveaux.

Au lieu de définir la valeur par défaut comme un autre dict par défaut, définissez la valeur par défaut comme une fonction lambda qui renvoie un dict par défaut :

x = defaultdict(lambda: defaultdict(dict))

Ce code crée un defaultdict à deux niveaux, où x[0] est un defaultdict et x[0][1] est un autre defaultdict, les valeurs étant dictionnaires.

Pour une imbrication de niveaux infinis, ajoutez simplement des niveaux supplémentaires à la fonction lambda :

x = defaultdict(lambda: defaultdict(lambda: defaultdict(...)))

Cette solution de contournement permet la création de dicts par défaut arbitrairement imbriqués, offrant un moyen pratique de gérer des données complexes structures à création de valeur automatique.

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