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
DDDoriginal
2024-11-26 07:43:09293parcourir

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 {}

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))

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!

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