可能有更好的解决方法,但是我在文档或源代码中找不到任何内容。
Python 2(查看评论)
我将其分类
OrderedDict,并使其返回无法排序的项目的列表:
from collections import OrderedDictclass UnsortableList(list): def sort(self, *args, **kwargs): passclass UnsortableOrderedDict(OrderedDict): def items(self, *args, **kwargs): return UnsortableList(OrderedDict.items(self, *args, **kwargs))yaml.add_representer(UnsortableOrderedDict, yaml.representer.SafeRepresenter.represent_dict)
它似乎起作用:
>>> d = UnsortableOrderedDict([... ('z', 0),... ('y', 0),... ('x', 0)... ])>>> yaml.dump(d, default_flow_style=False)'z: 0ny: 0nx: 0n'
Python 3或2(请参阅注释)
您还可以编写一个自定义表示符,但是我不知道以后是否会遇到问题,因为我从中剥离了一些样式检查代码:
import yamlfrom collections import OrderedDictdef represent_ordereddict(dumper, data): value = [] for item_key, item_value in data.items(): node_key = dumper.represent_data(item_key) node_value = dumper.represent_data(item_value) value.append((node_key, node_value)) return yaml.nodes.MappingNode(u'tag:yaml.org,2002:map', value)yaml.add_representer(OrderedDict, represent_ordereddict)
但是,您可以使用本机
OrderedDict类。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)