Python: итерация по словарю в том порядке, в котором были вставлены элементы

d = { 'c' : 1, 'f': 2, 'a': 3}

for key, value in d.iteritems():
    print key

Я хочу иметь возможность перебирать ключи в том порядке, в котором они были вставлены.

Я посмотрел на преобразование dict в OrderedDict, но у них, похоже, был какой-то порядок (а не порядок их вставки)

Есть ли простой способ преобразовать dict в OrderedDict, который поддерживает порядок вставки?


person ealeon    schedule 22.09.2015    source источник
comment
К тому времени, когда вы создаете дикт, вы потеряли заказ. Если вам нужен порядок, вам нужно создать OrderedDict с самого начала.   -  person BrenBarn    schedule 22.09.2015
comment
@BrenBarn хорошо, я так и думал, но просто уточнил у умного человека здесь   -  person ealeon    schedule 22.09.2015


Ответы (1)


Вы не должны преобразовывать dict в OrderedDict, вы должны использовать OrderedDict в первую очередь:

from collections import OrderedDict

od = OrderedDict()
od['c'] = 1
od['f'] = 2
od['a'] = 3

Или, что проще, создайте OrderedDict из list кортежей или tuple из tuples:

od = OrderedDict([('c', 1), ('f', 2), ('a', 3)])

Проблема с преобразованием dict в OrderedDict заключается в том, что как только вы создаете dict или добавляете в него что-либо, порядок теряется. Таким образом, вы вообще не можете использовать dict, если вам нужно поддерживать порядок.

person Markus Meskanen    schedule 22.09.2015