Ich verwende ein Paket, das ein verschachteltes Wörterbuch zurückgibt. Es fühlt sich unbeholfen an, auf dieses Rückgabeobjekt in meinen Klassenmethoden mit der Wörterbuchsyntax zuzugreifen, wenn alles andere in der Objektsyntax ist. Die Suche hat mich zu den Bündel/Neobunch-Paketen gebracht, was zu erreichen scheint, was ich suche. Ich habe auch Nametuples vorgeschlagen, aber diese unterstützen nicht einfach geschachtelte Attribute und die meisten Lösungen verwenden Wörterbücher innerhalb des namedtuple für die Verschachtelung.Objektähnlicher Attributzugriff für verschachteltes Wörterbuch
Was wäre eine natürlichere Art, dies zu erreichen?
data = {'a': 'aval', 'b': {'b1':{'b2a':{'b3a':'b3aval','b3b':'b3bval'},'b2b':'b2bval'}} }
print(data['b']['b1']['b2a']['b3b']) # dictionary access
# print(data.b.b1.b2a.b3b) # desired access
import neobunch
data1 = neobunch.bunchify(data)
print(data1.b.b1.b2a.b3b)
Könnten Sie bitte erläutern, warum/wie der Code funktioniert? Vielen Dank! –
@BartKleijngeld: Welche Rolle (n) verstehst du nicht? – martineau
Ich verstehe nicht, wie die Wörterbuchschlüssel irgendwie Eigenschaften des 'data1' Objekts werden. Ich habe das Gefühl, dass ich etwas sehr Einfaches verpasse, aber ich würde mich freuen, wenn Sie mir diesen Teil erklären könnten :). –