这个问题在这里已有答案:
我使用yaml模块生成yaml文件,但实际上我没有得到正确的预期输出,下面是代码:
import yaml
list1 = [{'Test01': '01', 'Test02': '02'}, {'Test03': '03', 'Test04': '04'}]
some_data = {"data": list1}
yaml_data = {
'version': '1.0'
}
yaml_data.update(some_data)
print(yaml.dump(yaml_data, default_flow_style=False))
实际产量:
data:
- Test01: '01'
Test02: '02'
- Test03: '03'
Test04: '04'
version: '1.0'
预期产量:
data:
-
Test01: '01'
Test02: '02'
-
Test03: '03'
Test04: '04'
version: '1.0'
您可以使用OrderedDict
而不是dict
来保存yaml.dump()
中的顺序
from collections import OrderedDict
import yaml
list1 = [{'Test01': '01', 'Test02': '02'}, {'Test03': '03', 'Test04': '04'}]
some_data = OrderedDict({"data": list1})
yaml_data = OrderedDict({
'version': '1.0'
})
yaml_data.update(some_data)
print(yaml_data)
def represent_dictionary_order(self, dict_data):
return self.represent_mapping('tag:yaml.org,2002:map', dict_data.items())
def setup_yaml():
yaml.add_representer(OrderedDict, represent_dictionary_order)
setup_yaml()
print(yaml.dump(yaml_data, default_flow_style=False))