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

Comment créer un defaultdict infiniment imbriqué en Python ?

DDD
Libérer: 2024-11-26 07:43:09
original
219 Les gens l'ont consulté

How to Create an Infinitely-Nested defaultdict in Python?

Comment créer un defaultdict récursif de niveau infini

Le defaultdict de Python est une structure de données polyvalente qui peut être utilisée pour créer des dictionnaires imbriqués. Cependant, par défaut, les defaultdicts ne fournissent qu'un seul niveau d'imbrication. Existe-t-il un moyen de créer un defaultdict qui se comporte comme une usine par défaut pour les defaultdicts internes, créant ainsi une structure récursive de niveau infini ?

La question initiale cherchait à obtenir le comportement suivant :

x = defaultdict(...stuff...)
x[0][1][0]
# Should return an empty dictionary {}
Copier après la connexion

En utilisant uniquement les arguments defaultdict natifs, il n'est pas possible de créer un defaultdict récursif imbriqué à l'infini. La solution de contournement populaire consiste à utiliser une fonction lambda :

x = defaultdict(lambda: defaultdict(dict))
Copier après la connexion

Cette approche crée un defaultdict qui génère un nouveau defaultdict lors de l'accès à une clé manquante. Cela fournit effectivement des niveaux infinis d'imbrication.

Avantages de l'approche basée sur Lambda :

  • Explicite et compréhensible : La syntaxe est clairement définit le comportement souhaité, ce qui le rend facile à comprendre pour les autres développeurs.
  • Données flexibles Types : La "feuille" du defaultdict peut être personnalisée pour être une liste, un ensemble ou toute autre structure de données en modifiant la fonction lambda.

Remarque :

Le defaultdict infiniment imbriqué utilisant lambda a les caractéristiques suivantes :

  • Accéder à un La clé manquante renverra toujours une nouvelle instance du type de données spécifié (dans ce cas, un defaultdict(dict)).
  • La profondeur d'imbrication est techniquement limitée par la mémoire disponible et la structure de données spécifique utilisée (dans ce cas cas, un defaultdict(dict)).

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal