¿Cómo se controla cómo el orden en el que PyYaml genera los pares de clave/valor al serializar un diccionario de Python?Controlar el orden de serialización de Yaml en Python
Estoy usando Yaml como un formato de serialización simple en una secuencia de comandos de Python. Mis objetos serializados de Yaml representan una especie de "documento", por lo que para una máxima facilidad de uso, me gustaría que el campo "nombre" de mi objeto aparezca primero en el archivo. Por supuesto, dado que el valor devuelto por el objeto __getstate__
es un diccionario y los diccionarios de Python están desordenados, el campo "nombre" se serializará en una ubicación aleatoria en la salida.
p. Ej.
>>> 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
Para el registro, hay una pregunta similar (pidió un par de años después de éste) aquí: http://stackoverflow.com/q/16782112/877069 –