Maison >développement back-end >Tutoriel Python >Un defaultdict peut-il servir de manière récursive comme sa propre valeur par défaut pour une imbrication infinie ?

Un defaultdict peut-il servir de manière récursive comme sa propre valeur par défaut pour une imbrication infinie ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-28 02:35:12486parcourir

Can a defaultdict Recursively Serve as its Own Default Value for Infinite Nesting?

Création d'un defaultdict infiniment imbriqué de defaultdict

Question :

Est-il possible de créer un defaultdict qui sert également de la valeur par défaut pour elle-même, ce qui entraîne un defaultdict récursif de niveau infini ? L'objectif est de permettre l'accès à des éléments profondément imbriqués sans rencontrer d'exceptions KeyError.

Réponse :

Alors que les autres réponses abordent la création d'une « infinité » de dicts par défaut imbriqués, ils négligent la nécessité spécifique d’un énoncé par défaut à deux niveaux. Pour y parvenir, le code suivant peut être utilisé :

defaultdict(lambda: defaultdict(dict))

Cette construction offre les avantages suivants :

  • Explicitité : C'est plus simple et compréhensible que l'approche récursive.
  • Feuille personnalisable : Elle permet la personnalisation de la valeur "feuille" du defaultdict pour être autre chose qu'un dictionnaire, comme des listes ou des ensembles.

Exemple :

x = defaultdict(lambda: defaultdict(dict))
x[0][1][0]
{}  # returns an empty dictionary

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