Как вы контролируете, как порядок, в котором PyYaml выводит пары ключ/значение при сериализации словаря Python?
Я использую Yaml как простой формат сериализации в Python script. Мои сериализованные объекты Ямля представляют собой своего рода "документ", поэтому для максимального удобства пользователя я хотел бы, чтобы поле "имя" моего объекта появилось первым в файле. Конечно, поскольку значение, возвращаемое моим объектом __getstate__
, является словарем, а словари Python неупорядочены, поле "имя" будет сериализовано в случайном месте на выходе.
например.
>>> 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