Как контролировать порядок вывода пар ключ/значение в 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