Zugriff auf den Schlüssel in der Factory des Defaultdict

8

Ich versuche, etwas Ähnliches zu tun:

%Vor%

(eigentlich ist der Grund, warum ich auf den Schlüssel in der Fabrik zugreifen muss, nicht ein md5 zu berechnen, aber aus anderen Gründen; dies ist nur ein Beispiel)

Wie Sie sehen, habe ich in der Fabrik keinen Zugriff auf den Schlüssel: Ich zwinge ihn nur, was überhaupt keinen Sinn ergibt.

Ist es möglich, defaultdict so zu verwenden, dass ich in der Fabrik auf den Schlüssel zugreifen kann?

    
dangonfast 16.10.2013, 08:56
quelle

2 Antworten

14

__missing__ von defaultdict übergibt nicht key zur Fabrikfunktion.

  

Wenn default_factory nicht None ist, heißt es ohne Argumente   Geben Sie einen Standardwert für den angegebenen Schlüssel an, in den dieser Wert eingefügt wird   das Wörterbuch für den Schlüssel und zurückgegeben.

Erstellen Sie Ihre eigene Wörterbuchklasse mit der benutzerdefinierten Methode __missing__ .

%Vor%     
falsetru 16.10.2013, 09:03
quelle
3

Leider nicht direkt, da defaultdict spezifiziert, dass default_factory ohne Argumente aufgerufen werden muss:

Ссылка

Es ist jedoch möglich, defaultdict als Basisklasse mit dem gewünschten Verhalten zu verwenden:

%Vor%

Das funktioniert für mich:

%Vor%     
Meridius 16.10.2013 09:21
quelle