Я пытаюсь создать объект OrderedDict, но как только я его создам, чем все элементы смешаны.Python OrderedDict не поддерживает порядок элементов
Это то, что я делаю:
from collections import OrderedDict
od = OrderedDict({(0,0):[2],(0,1):[1,9],(0,2):[1,5,9]})
элементы не остаются в порядке, я назначу
od
OrderedDict([((0, 1), [1, 9]), ((0, 0), [2]), ((0, 2), [1, 5, 9])])
docs.python.org не пример, и я могу» t выяснить, почему порядок становится беспорядочным. Любая помощь приветствуется.
Также следует отметить, что для определения порядка передачи имени/значений конструктору недостаточно. '>>> from коллекции import OrderedDict' ' >>> OrderedDict (one = 1, two = 2, three = 3, four = 4) ' ' OrderedDict ([('four', 4), ('one ', 1), (' three ', 3), (' two ', 2)]) ' –
@EricSmith Действительно, по той же причине переменные keyword args (' ** kwargs') в Python хранятся в словаре - поэтому, когда это происходит, порядок теряется, как и раньше. Обратите внимание, что [PEP-468] (http://legacy.python.org/dev/peps/pep-0468/) имеет простое решение - используйте 'OrderedDict' для' kwargs', а не функцию, но возможно когда-нибудь. –
@GarethLatty теперь в [python 3.6] (https://docs.python.org/3/whatsnew/3.6.html#pep-468-preserving-keyword-argument-order) они реализовали PEP-468 – Copperfield