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

Linda Hamilton
Libérer: 2024-11-24 04:35:11
original
617 Les gens l'ont consulté

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]
{}
Copier après la connexion

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))
Copier après la connexion

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(...)))
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal