避免在PyYAML中引用

避免在PyYAML中引用,第1张

避免在PyYAML中引用

PyYAML转储程序使用一种

ignore_aliases
方法来防止原始类型以这种方式“锚定”和“引用”。您可以重写该方法,以始终忽略传入的任何对象而忽略_aliases。默认情况下,
yaml.Loader
该类在
yaml.load
¹中使用:

t = ("b", "c")x = {(1, t):1, (2, t):2, }yaml.Dumper.ignore_aliases = lambda *args : Trueyaml.dump(x, sys.stdout)

将为您提供:

? !!python/tuple- 1- !!python/tuple [b, c]: 1? !!python/tuple- 2- !!python/tuple [b, c]: 2

这样,您就不必尽力而为,使用具有相同哈希值的元组来看起来就不同了。你可能想提供

default_flow_style
参数上
yaml.load
False
True
得到输出的不同布局。

您无法使之起作用的原因是,表示符与的结果匹配,

id()
并且对于两个单独生成的元组,只要元素相同,则表示相同。


¹我只是使用ruamel.yaml尝试了这一点,我是作者ruamel.yaml,它是PyYAML的增强版本,但是对于这两者来说,它们应该相同。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5648001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存