Код:
d = {'a': 0, 'b': 1, 'c': 2}
l = d.keys()
print l
Это печатает ['a', 'c', 'b']
. Я не уверен, как метод keys()
определяет порядок ключевых слов в l . Однако я хотел бы иметь возможность извлекать ключевые слова в «правильном» порядке. Правильный порядок, конечно, создаст список ['a', 'b', 'c']
.
python
dictionary
прямоугольник
источник
источник
Ответы:
Вы можете использовать OrderedDict (требуется Python 2.7) или выше.
Также обратите внимание, что
OrderedDict({'a': 1, 'b':2, 'c':3})
это не сработает, так какdict
вы создаете с{...}
уже забыли порядок элементов. Вместо этого вы хотите использоватьOrderedDict([('a', 1), ('b', 2), ('c', 3)])
.Как упоминалось в документации, для версий ниже Python 2.7 вы можете использовать этот рецепт.
источник
Python 3.7+
В Python 3.7.0 сохранение порядка вставки
dict
объектов было объявлено официальной частью спецификации языка Python. Следовательно, вы можете на это положиться.Python 3.6 (CPython)
Начиная с Python 3.6, для реализации Python в CPython словари по умолчанию поддерживают порядок вставки . Однако это считается деталью реализации; вы все равно должны использовать,
collections.OrderedDict
если хотите, чтобы порядок вставки гарантировался в других реализациях Python.Python> = 2.7 и <3.6
Используйте
collections.OrderedDict
класс, когда вам нужен,dict
который запоминает порядок вставленных элементов.источник
Используйте функцию сортировки , которая сортирует переданный итерируемый объект.
.keys()
Метод возвращает ключи в произвольном порядке.источник
Из http://docs.python.org/tutorial/datastructures.html :
«Метод keys () объекта словаря возвращает список всех ключей, используемых в словаре, в произвольном порядке (если вы хотите его отсортировать, просто примените к нему функцию sorted ())».
источник
Просто отсортируйте список, когда захотите его использовать.
источник
Хотя порядок не имеет значения, поскольку словарь - это hashmap. Это зависит от порядка, в котором он вставлен:
вывод:
для строки abbc ключи - dict_keys (['a', 'b', 'c']),
для строки cbab ключи - dict_keys (['c', 'b', 'a'])
источник