Come si controlla l'ordine in cui PyYaml emette coppie chiave/valore durante la serializzazione di un dizionario Python?Controllo dell'ordine di serializzazione Yaml in Python
Sto usando Yaml come un semplice formato di serializzazione in uno script Python. Gli oggetti serializzati My Yaml rappresentano una sorta di "documento", quindi per la massima facilità d'uso, vorrei che il campo "nome" del mio oggetto appaia per primo nel file. Ovviamente, poiché il valore restituito dal mio oggetto __getstate__
è un dizionario e i dizionari Python non sono ordinati, il campo "nome" verrà serializzato in una posizione casuale nell'output.
ad es.
>>> import yaml
>>> class Document(object):
... def __init__(self, name):
... self.name = name
... self.otherstuff = 'blah'
... def __getstate__(self):
... return self.__dict__.copy()
...
>>> doc = Document('obj-20111227')
>>> print yaml.dump(doc, indent=4)
!!python/object:__main__.Document
otherstuff: blah
name: obj-20111227
Per la cronaca, c'è una domanda simile (ha chiesto un paio di anni dopo questo) qui: http://stackoverflow.com/q/16782112/877069 –