Вывести элементы итерации 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])