Остановите Python в алфавитном порядке dicts внутри dicts

#python #dictionary

#python #словарь

Вопрос:

Если я создам dict из dicts

 mydict = {
    'zstuff':{
        'zzz':True,
        'aaa':True
    },
    'astuff':{
        'zzz':True,
        'aaa':True
    }
}
  

Затем используйте ‘for’ для циклического выполнения dicts

 for key in mydict:
    for tag in mydict[key]:
        print "{}:{}".format(key,tag)
  

Python выводит

 zstuff:aaa
zstuff:zzz
astuff:aaa
astuff:zzz
  

Есть ли какой-либо способ заставить Python не переупорядочивать dicts второго уровня?

Ответ №1:

Python не упорядочивает словари по алфавиту. Фактически, он упорядочивает словари произвольно. Если вам нужен объект dictionary, который сохраняет исходный порядок, взгляните на collections.OrderedDict класс, доступный в Python 2.7.

Комментарии:

1. Что-нибудь подобное для Python 2.6?

Ответ №2:

 from collections import OrderedDict

mydict = {'zstuff' : OrderedDict(zzz=True, aaa=True),
          'astuff' : OrderedDict(zzz=True, aaa=True)}