Python辞書をシリアライズするときにPyYamlがキーと値のペアをどのように出力するかを制御するにはどうすればよいですか?PythonでのYamlのシリアライゼーション順序の制御
私は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
、同様の質問(この1年後のカップルを尋ねた)ここにあります:私の元のコードに適用され、解決策のようなものが見えますhttp://stackoverflow.com/q/16782112/877069 –