[PYTHON] Reihenfolge in PyYAML beibehalten und lesen

Hinweis zu PyYAML

Wenn Sie eine Yaml-Datei mit PyYAML lesen, wird sie standardmäßig als normales Wörterbuch gelesen Die Reihenfolge der Dateien kann nicht garantiert werden.

Zum Beispiel, wenn Sie eine solche Yaml-Datei haben

data.yml


aaa:
  a1: 1
  a2: 2
  a3: 3
bbb:
  b1: 1
  b2: 2
  b3: 3
ccc:
  c1: 1
  c2: 2
  b3: 3

Wenn Sie normalerweise yaml.load und ausgeben

yaml_load.py


import yaml

data = yaml.load(file("data.yml"))

for k1, v1 in data.items():
    for k2, v2 in v1.items():
        print("%s - %s - %s" % (k1, k2, v2))

Es sieht aus wie das.

Ausführungsergebnis


aaa - a1 - 1
aaa - a3 - 3
aaa - a2 - 2
bbb - b1 - 1
bbb - b2 - 2
bbb - b3 - 3
ccc - c2 - 2
ccc - c1 - 1
ccc - b3 - 3

Wenn Sie in der in der Datei beschriebenen Reihenfolge lesen möchten, lesen Sie sie als OrderedDict.

yaml_load.py


import yaml
from collections import OrderedDict

#Füge das hinzu
yaml.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG,
    lambda loader, node: OrderedDict(loader.construct_pairs(node)))

data = yaml.load(file("data.yml"))

for k1, v1 in data.items():
    for k2, v2 in v1.items():
        print("%s - %s - %s" % (k1, k2, v2))

Jetzt können Sie die Bestellung behalten und lesen.

Ausführungsergebnis


aaa - a1 - 1
aaa - a2 - 2
aaa - a3 - 3
bbb - b1 - 1
bbb - b2 - 2
bbb - b3 - 3
ccc - c1 - 1
ccc - c2 - 2
ccc - b3 - 3

Around Wurde verwiesen

das ist alles

Recommended Posts

Reihenfolge in PyYAML beibehalten und lesen
# Zeile ignorieren und mit Pandas lesen
Erstellen und lesen Sie Messagepacks in Python
Lesen und schreiben Sie JSON-Dateien mit Python
Lesen Sie DXF mit Python
Lesen Sie die CSV-Datei und zeigen Sie sie im Browser an
Lesen und Schreiben von Gleitkommazahlen mit einfacher Genauigkeit in Python
Lesen und schreiben Sie NFC-Tags mit Python mit PaSoRi
Lesen Sie XBRL und visualisieren Sie auf einfache Weise Änderungen der Geschäftsleistung
Natürliche Ordnung in Python
Referenzreihenfolge von Klassenvariablen und Instanzvariablen in "self. Klassenvariablen" in Python
Tipps zum Codieren kurz und einfach in Python zu lesen
Lesen Sie json mit C # und konvertieren Sie es in den Wörterbuchtyp (erzwungen)
Extrahieren Sie Array-Elemente und -Indizes in absteigender Reihenfolge mit numpy
CSV-Datei lesen und schreiben
Lesen Sie Eulers Formel in Python
Dateien lesen und schreiben
Lesen Sie XML mit dem in Python angegebenen Namespace
Lesen Sie Outlook-E-Mails mit Python
Stapel und Warteschlange in Python
Dateien schreiben und lesen
Unittest und CI in Python
Lesen Sie die Fortran-Ausgabe mit Python