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 :
Remarque :
Le defaultdict infiniment imbriqué utilisant lambda a les caractéristiques suivantes :
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!