Вывести элементы итерации dict в том виде, в котором они прочитаны (объявлены)

Я читаю словарь в python2.6, как показано ниже. Я знаю, что Python3.6 будет читать словарь в том же порядке, в котором он объявлен, но мне нужно добиться этого в Python2.6 (OrderedDict также недоступен в Python2.6)

numbermap = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5}

>>> for k, v in numbermap.iteritems():
...    print(k,v)
...
('four', 4)
('three', 3)
('five', 5)
('two', 2)
('one', 1)

Я хочу, чтобы результат был

('one',1)
('two', 2)
('three', 3)
('four', 4)
('five', 5)

Мне нужно написать, как я читаю словарь. Любые идеи для достижения этого в Python 2.6?

3 ответа

Кажется, вы хотите заказать словарь. Если вы можете использовать Python 2.7, посмотрите вверх collections.OrderedDict: https://docs.python.org/2/library/collections.html

Если вам нужно придерживаться версии 2.6, здесь есть несколько предложений: /questions/15496940/ordereddict-dlya-staryih-versij-python/15496942#15496942 (но вам, вероятно, следует обратиться к словарям: как сохранить ключи / значения в том же порядке, как объявлено?)

Есть много методов, доступных для сортировки словаря. Вы можете проверить ниже примеры.

Первый пример:

>>> import operator
>>> numbermap = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5}
>>> sorted_maps = sorted(numbermap.items(), key=operator.itemgetter(1))
>>> print(sorted_maps)
[('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)]

Второй пример:

>>> import collections
>>> sorted_maps = collections.OrderedDict(numbermap)
>>> print(sorted_maps)
OrderedDict([('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)])

1 изменить значение ключа,

2 отсортировать новый ключ, который является значением

мое решение состоит в том, чтобы отсортировать ключи

звучит как обман, но работает:

сначала позвонить что-нибудь, чтобы изменить дикт

for i in sort(numbermap.keys()):
  print(i,numbermap[i])
Другие вопросы по тегам