YAML определяет, что порядок сопоставления ключей не должен передавать информацию о содержимом.Следовательно, вы не должны зависеть от порядка отображения ключей при использовании YAML.Смотрите также это обсуждение .Если то, что вы делаете, зависит от порядка ключей, вы должны использовать список, например:
import yaml
d = [{str(i): []} for i in range(101)]
with open('result.yml', 'w') as yaml_file:
yaml.dump(d, yaml_file, default_flow_style=False)
, который дает вам:
- '0': []
- '1': []
- '2': []
с сохранением порядка ключей, потому чтоВы завернули пары ключ-значение в список.
Если вам действительно нужно записать отображение в том порядке, в котором вы хотите, чтобы оно было, вы все равно можете использовать API событий низкого уровня:
import yaml
from yaml.events import *
d = [StreamStartEvent(), DocumentStartEvent(),
MappingStartEvent(anchor=None, tag=u'tag:yaml.org,2002:map', implicit=True)]
for i in range(101):
d.extend([ScalarEvent(anchor=None, tag=u'tag:yaml.org,2002:str', value=str(i),
implicit=(True, True)),
SequenceStartEvent(anchor=None, tag=u'tag:yaml.org,2002:seq', implicit=True),
SequenceEndEvent()])
d.extend([MappingEndEvent(), DocumentEndEvent(), StreamEndEvent()])
with open('result.yml', 'w') as yaml_file:
yaml.emit(d, yaml_file)