Python - Zugriff auf Werte, die in Wörterbüchern verschachtelt sind

8

Ich habe ein Wörterbuch, das Wörterbücher enthält, die auch Wörterbücher enthalten können, z. B.

%Vor%

Momentan entpacke ich, um die 'Rechnung an' für ID 001, 'Transaktionsreferenz' a1 wie folgt zu erhalten:

%Vor%

Ich kann nicht anders, als zu denken, dass das etwas klobig ist, besonders die letzten zwei Zeilen - ich habe das Gefühl, dass etwas im Sinne des Folgenden funktionieren sollte:

%Vor%

Gibt es einen einfacheren Ansatz zum Aufschlüsseln in verschachtelte Wörterbücher, ohne dass Sie in vorläufige Variablen entpacken müssen?

    
user1530213 28.07.2012, 11:55
quelle

3 Antworten

13
%Vor%

funktioniert tatsächlich. transactions['Transaction Details'] ist ein Ausdruck, der eine dict angibt, so dass Sie darin nachschlagen können. Für praktische Programme würde ich jedoch einen OO-Ansatz für geschachtelte Diktate bevorzugen. collections.namedtuple ist besonders nützlich, um schnell eine Menge von Klassen einzurichten, die nur Daten enthalten (und kein eigenes Verhalten).

Es gibt eine Einschränkung: In einigen Einstellungen möchten Sie vielleicht KeyError abfangen, wenn Sie nachschauen, und in dieser Einstellung funktioniert das auch, es ist schwer zu sagen, welche Wörterbuchsuche fehlgeschlagen ist:

%Vor%     
Fred Foo 28.07.2012, 12:03
quelle
20

Sie können etwas wie folgt verwenden:

%Vor%

Wenn Sie Ihre Suchschlüssel nicht als einzelne Parameter definieren möchten, können Sie sie einfach als Liste übergeben:

%Vor%     
astynax 28.07.2012 13:43
quelle
2

Im Folgenden finden Sie eine weitere Möglichkeit, auf verschachtelte Wörterbücher zuzugreifen

%Vor%

Hier bezieht sich die Variable 'name' auf 'dbo [' m '] [' d '] [' v '] [' version ']', was viel kürzer und sauber erscheint.

Diese Methode löst KeyError nicht aus. Wenn ein Schlüssel nicht gefunden wird, erhalten Sie 'None'.

Siehe auch: Ссылка

    
blackfyre 16.12.2014 11:51
quelle

Tags und Links