Konvertierung der YAML-Datei in Python-Dict

9

Ich habe das folgende Problem der Zuordnung von Dokumenten innerhalb einer YAML-Datei zu einem dict und ordne sie korrekt zu.

Ich habe die folgende YAML-Datei, die einen Server darstellt ( db.yml ):

%Vor%

Ich lade diese YAML-Datei, was ich ohne Probleme tun kann. Ich glaube, ich verstehe das.

%Vor%

Ich möchte, dass die Logik wie folgt funktioniert:

  • lade yaml, map zu dict
  • schau in jedes dict im Dokument, wenn instanceId mit dem übereinstimmt, was von getInstanceId() festgelegt wurde, dann drucke alle Schlüssel und Werte für dieses Dokument aus.

Wenn ich die Kartendatenstruktur von der Befehlszeile aus betrachte, bekomme ich:

%Vor%

Ich denke, ich könnte die Datenstruktur für die YAML-Datei nicht korrekt erstellen, und wenn ich den Inhalt von dict anpasse, bin ich etwas verloren.

Randnotiz: Ich kann nicht alle Dokumente in dieser Datei mit yaml.load() laden, ich habe yaml.load_all() versucht, was zu funktionieren scheint, aber mein Hauptproblem besteht immer noch.

    
Zippy Zeppoli 22.10.2012, 20:51
quelle

2 Antworten

15

Ich denke, deine Yaml-Datei sollte so aussehen (oder zumindest so ähnlich, so dass sie trotzdem richtig strukturiert ist):

%Vor%

Dann gibt yaml.load(...) zurück:

%Vor%

Und Sie können von dort aus gehen ...

So benutzt wie:

%Vor%     
Jon Clements 22.10.2012, 21:40
quelle
3

Ein zusätzlicher Fehler in Ihrem Code, der nicht mit YAML zu tun hat:

%Vor%

in ist ein Operator, der auf Sequenztypen und auch auf Karten. Deshalb ist das kein Syntaxfehler ... aber es tut nicht was Sie wollen.

key in dict wird immer als True ausgewertet, da alle Schlüssel, die Sie durchlaufen, im Diktat enthalten sind. Also kocht dein Code auf True == "instanceId" , was immer zu False ausgewertet wird, weil der boolesche Wert True niemals dieser Zeichenfolge entspricht.

Sie haben vielleicht bemerkt, dass die print -Anweisung keine Ausgabe erzeugt; Dies liegt daran, dass es nie aufgerufen wird.

    
Michael Scheper 07.03.2017 16:35
quelle