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