Порядок ключей в словаре - PullRequest
28 голосов
/ 21 мая 2011

У меня есть словарь

{'a': 'first', 'b': 'second'}

Однако мне нужен словарь в другом порядке:

{'b': 'second', 'a': 'first'}

Как лучше всего это сделать?

Ответы [ 3 ]

41 голосов
/ 21 мая 2011

Словари не упорядочены . Так что нет никакого способа сделать это.

Если у вас есть python2.7 +, вы можете использовать collections.OrderedDict - в этом случае вы можете получить список элементов, используя .items(), а затем повернуть его и создать новый OrderedDict из обращенного списка:

>>> od = OrderedDict((('a', 'first'), ('b', 'second')))
>>> od
OrderedDict([('a', 'first'), ('b', 'second')])
>>> items = od.items()  # list(od.items()) in Python3
>>> items.reverse()
>>> OrderedDict(items)
OrderedDict([('b', 'second'), ('a', 'first')])

Если вы используете более старую версию Python, вы можете получить бэкпорт от http://code.activestate.com/recipes/576693/

7 голосов
/ 21 мая 2011

Словари не имеют порядка.

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

keys = myDict.keys()
keys = sorted(keys)  # order them in some way
for k in keys:
   v = myDict[k]
4 голосов
/ 21 мая 2011

Вы не можете;dict несортируемы.Используйте OrderedDict, если вам нужен упорядоченный словарь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...