Maison >développement back-end >Tutoriel Python >Comment puis-je créer un defaultdict récursif de niveau infini en Python ?

Comment puis-je créer un defaultdict récursif de niveau infini en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-25 17:32:15213parcourir

How Can I Create an Infinite-Level Recursive defaultdict in Python?

Création d'un defaultdict récursif de niveau infini

En Python, defaultdict est un outil polyvalent qui fournit une valeur par défaut pour les clés manquantes dans les dictionnaires. Cependant, est-il possible de créer un defaultdict récursif de niveau infini ? Cela signifie créer un defaultdict où la valeur par défaut est également un defaultdict, créant ainsi des defaultdicts imbriqués.

Au départ, on pourrait s'attendre à ce que x = defaultdict(defaultdict) crée un defaultdict à deux niveaux, mais en accédant à x[0 ][0] entraîne une KeyError. Pour obtenir une récursivité de niveau infini, une approche alternative est nécessaire.

Une solution consiste à utiliser une fonction lambda comme valeur par défaut :

x = defaultdict(lambda: defaultdict(dict))

Cela crée un defaultdict où la valeur par défaut est une fonction qui renvoie un autre defaultdict avec un dictionnaire comme valeur par défaut. Cela permet une récursivité de niveau infini, car l'accès à x[0][1][0] crée un dictionnaire vide dans les dicts par défaut imbriqués.

Par rapport à la méthode récursive présentée dans d'autres réponses, cette approche offre plusieurs avantages. :

  • Explicitité : Il est plus explicite sur la structure imbriquée, ce qui facilite la comprendre.
  • Flexibilité : Cela permet à la "feuille" de la structure defaultdict d'être autre chose qu'un dictionnaire. Par exemple, defaultdict(lambda: defaultdict(list)) créerait un defaultdict avec des listes comme valeurs feuilles.

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