Ключи диктанта хранятся в хеш-таблице, так что это их «естественный порядок», то есть псевдослучайный. Любой другой заказ - это понятие потребителя диктата.
sorted () всегда возвращает список, а не диктат. Если вы передадите ему dict.items () (который создает список кортежей), он вернет список кортежей [(k1, v1), (k2, v2), ...], которые можно использовать в цикле в некотором смысле очень похоже на диктовку, но это ни в коем случае не диктат !
foo = {
'a': 1,
'b': 2,
'c': 3,
}
print foo
>>> {'a': 1, 'c': 3, 'b': 2}
print foo.items()
>>> [('a', 1), ('c', 3), ('b', 2)]
print sorted(foo.items())
>>> [('a', 1), ('b', 2), ('c', 3)]
Следующее выглядит как дикт в цикле, но это не так, это список кортежей, распаковываемых в k, v:
for k,v in sorted(foo.items()):
print k, v
Примерно эквивалентно:
for k in sorted(foo.keys()):
print k, foo[k]