Posted at

PyYamlの出力時にreferenceの機能を無効にする方法

More than 1 year has passed since last update.

何も設定せずにyaml.dumpするとreferenceの機能が使われてしまう。不要な場合もある。

import yaml

person = {
"name": "foo",
"age": 20
}
d = [person, person]

print(yaml.dump(d))

例えば以下のような出力になる。

- &id001 {age: 20, name: foo}

- *id001

yaml.dumpにDumperオプションが渡せる。そしてここで渡すDumperクラスのignore_aliases()メソッドをTrueを返すようにしてあげれば良い。

class IgnoreReferenceDumper(yaml.Dumper):

def ignore_aliases(self, data):
return True

print(yaml.dump(d, Dumper=IgnoreReferenceDumper))

平和が訪れた。

- {age: 20, name: foo}

- {age: 20, name: foo}