Заказ в словаре Python (2.4)

r_dict={'answer1': "value1",'answer11': "value11",'answer2': "value2",'answer3': "value3",'answer4': "value4",} for i in r_dict: if("answer" in i.lower()): print i Result is answer11,answer2,snswer4,answer3 

Я использую Python 2.4.3. У меня есть способ получить заказ, в котором он заполнен?

Или есть способ сделать это с помощью регулярного выражения, так как я использую более старую версию Python?

Словари неупорядочены, то есть они имеют некоторый порядок, но на него неочевидно влияют порядок вставки и хэш ключей. Однако есть еще одна реализация, которая запоминает порядок вставки, collection.OrderedDict .

Изменить: для Python 2.4 существует несколько сторонних реализаций. Я не использовал их, но поскольку один из voidspace выглядит многообещающим.

Словарь по конструкции неупорядочен. Если вы хотите заказать заказ, используйте collections.OrderedDict :

 import collections r_dict = collections.OrderedDict( [ ( 'answer1', "value1"), ('answer11', "value11"), ('answer2', "value2"), ('answer3', "value3"), ('answer4', "value4") ] ) for i in r_dict: if("answer" in i.lower()): print i 

Не только используя словарь самостоятельно. Словари в Python (и хорошая часть эквивалентных неспециализированных структур данных, которые включают отображение) не сортируются.

Вы можете потенциально подклассировать dict и переопределить методы __setitem__ и __delitem__ для добавления / удаления каждой клавиши во внутренний список, где вы сохраняете свою собственную сортировку. Возможно, вам придется переопределить другие методы, такие как __iter__ чтобы получить сортировку, которую вы хотите, из цикла for.

… или просто используйте модуль odict, как предлагал @delnan

Короткий ответ: нет. Словари Python в основном неупорядочены.