我想让PyYAML的加载器将映射(和有序映射)加载到Python 2.7+ OrderedDict类型中,而不是vanilla dict和它当前使用的对列表.
最好的方法是什么?
在序列化Python字典时,如何控制PyYaml输出键/值对的顺序?
我在Python脚本中使用Yaml作为简单的序列化格式.我的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
Run Code Online (Sandbox Code Playgroud)