Контроль порядка сериализации Yaml в Python

Как контролировать порядок вывода пар ключ/значение в PyYaml при сериализации словаря Python?

Я использую Yaml как простой формат сериализации в сценарии Python. Мои сериализованные объекты Yaml представляют собой своего рода "документ", поэтому для максимального удобства пользователя я хотел бы, чтобы поле "имя" моего объекта появлялось первым в файле. Конечно, поскольку значение, возвращаемое функцией __getstate__ моего объекта, является словарем, а словари Python неупорядочены, поле "name" будет сериализовано в случайное место в выводе.

например,

>>> 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
13
задан Cerin 28 December 2011 в 01:59
поделиться