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
Libérer: 2024-11-25 17:32:15
original
243 Les gens l'ont consulté

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

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