python-如何使用OrderedDict作为yaml.dump或yaml.safe_dump中的输入?

我的问题很简单.我有一个具有自定义顺序的OrderredDict对象,我想将其转换为Yaml格式.但是似乎yaml.dump无法将Orderredict用作输入.有人知道怎么做吗?

最佳答案

看起来您想要this solution,它将为YAML添加一个“代表”.

假设您有一个由嵌套列表,字典和/或OrderedDicts组成的对象my_object,如果添加以下行,则可以将其转储到YAML:

yaml.add_representer(OrderedDict, lambda dumper, data: dumper.represent_mapping('tag:yaml.org,2002:map', data.items()))
output = yaml.dump(my_object)

我还发现有必要将我的元组转换为列表:

yaml.add_representer(tuple, lambda dumper, data: dumper.represent_sequence('tag:yaml.org,2002:seq', data))