In [3]: import yaml In [4]: from collections import OrderedDict In [5]: d1 = OrderedDict() In [6]: d1['a'] = 1 In [7]: d1['c'] = 2 In [8]: d1['b'] = 1 In [9]: d1 Out[9]: OrderedDict([('a', 1), ('c', 2), ('b', 1)]) In [10]: d = dict() In [11]: d['a'] = 1 In [12]: d['c'] = 2 In [13]: d['b'] = 4 In [14]: d Out[14]: {'a': 1, 'b': 4, 'c': 2} In [16]: yaml.dump(d) Out[16]: '{a: 1, b: 4, c: 2}\n' In [17]: yaml.dump(d1) Out[17]: '!!python/object/apply:collections.OrderedDict\ndictitems: {a: 1, b: 1, c: 2}\n' In [18]: def setup_yaml(): ....: """ http://stackoverflow.com/a/8661021 """ ....: represent_dict_order = lambda self, data: self.represent_mapping('tag:yaml.org,2002:map', data.items()) ....: yaml.add_representer(OrderedDict, represent_dict_order) ....: In [19]: setup_yaml() In [20]: yaml.dump(d1) Out[20]: '{a: 1, c: 2, b: 1}\n'