Mit einem einfachen Wörterbuch wie:
%Vor%Ich kann sicher verwenden:
%Vor%und selbst wenn 'key3' nicht vorhanden ist, werden keine Fehler ausgegeben, da .get () immer noch None zurückgibt.
Wie würde ich die gleiche Einfachheit mit einem verschachtelten Schlüsselwörterbuch erreichen:
%Vor%Das Folgende wird einen KeyError geben:
%Vor%Dies wird durchlaufen:
%Vor%aber es scheitert mit adn AttributeError: 'NoneType' Objekt hat kein Attribut 'get':
%Vor%Es gibt einen sehr schönen Blogbeitrag von Dan O'Huiginn zum Thema verschachtelte Wörterbücher. Er schlägt schließlich vor, dict mit einer Klasse zu unterklassifizieren, die die Verschachtelung besser behandelt. Hier ist die Unterklasse, die so modifiziert wurde, dass sie mit Ihrem Fall umgehen kann, wenn Sie versuchen, auf Schlüssel mit nicht-diktierten Werten zuzugreifen:
%Vor%Sie können auf verschachtelte vorhandene Schlüssel oder solche, die nicht existieren, verweisen. Sie können die Klammernotation für den Zugriff anstelle von .get () verwenden. Wenn für ein NestedDict-Objekt kein Schlüssel vorhanden ist, erhalten Sie ein leeres NestedDict-Objekt zurück. Die Initialisierung ist ein wenig wortreich, aber wenn Sie die Funktionalität benötigen, könnte es für Sie funktionieren. Hier sind einige Beispiele:
%Vor%Tags und Links python dictionary