2017-05-15 1 views
0

I yaml.safe_load Methode verwenden eine Datei zu bearbeiten, und ich kann sehen, dass die Daten, die durch diesen Anruf in einer anderen Reihenfolge istPython yaml safe_load: Wie die ursprüngliche Ordnung halten

mein Code Dies ist zurückgegeben werden :

a=yam.safe_load('{"method1": "value1","method2": "value2"}') 
    print(a) 

Und dies ist der Ausgang

{'method2': 'value2', 'method1': 'value1'} 

Was kann ich tun, um die ursprüngliche Reihenfolge zu halten?

+0

Python (<3.6) Wörterbuch nicht die Reihenfolge beibehalten. – falsetru

+3

Mögliches Duplikat von [Wie können Sie YAML-Mappings in Python als OrderedDicts laden?] (Http://stackoverflow.com/questions/5121931/in-python-how-can-you-load-yaml-mappings-as-ordereddicts) –

Antwort

0

sollten Sie round_trip_load anstelle von safe_load:

from ruamel import yaml 

data = yaml.round_trip_load('{"method1": "value1","method2": "value2"}') 
for key in data: 
    print(key) 

Nach der YAML-Spezifikation der Reihenfolge der Schlüssel in Mappings ist nicht beibehalten werden, so ist dies, was die rückwärtskompatibel safe_load tut. Nur die round_trip_load stellt die Zuordnung in einer Ordereddict-Unterklasse automatisch dar, um die Reihenfolge (und Kommentare usw.) zu erhalten.

Verwandte Themen