我想让PyYAML的加载器将映射(和有序映射)加载到Python 2.7+ OrderedDict类型中,而不是dict它当前使用的普通和对列表。最好的方法是什么?
3 回答

HUX布斯
TA贡献1876条经验 获得超6个赞
yaml模块允许您指定自定义“代表”以将Python对象转换为文本,并指定“构造函数”以逆转该过程。
_mapping_tag = yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG
def dict_representer(dumper, data):
return dumper.represent_dict(data.iteritems())
def dict_constructor(loader, node):
return collections.OrderedDict(loader.construct_pairs(node))
yaml.add_representer(collections.OrderedDict, dict_representer)
yaml.add_constructor(_mapping_tag, dict_constructor)
添加回答
举报
0/150
提交
取消