Идея этого цикла состояла в том, чтобы перебирать список. Если определенное свойство объекта не было ключом OrderedDict, оно добавило бы его. Это словарь списков объектовOrderedDict не остановился на заказе
for object in someList:
if object.DATE not in myOrderedDict:
myOrderedDict[object.DATE]=[]
myOrderedDict[object.DATE].append(object)
в то время как он, кажется, делают OrderedDict основном правильно, она заканчивается в порядке, когда это напечатано. Вместо того, чтобы иметь что-то вроде (01/13) (02/13) (03/13)
, оно больше похоже на (02/13) (03/13) (01/13)
.
Почему это происходит и как оно может быть исправлено?
Без учета того, что находится в 'someList', что невозможно ** рассказать. Предположим, что первым значением 'object.DATE' является' (02/13) '.. –
' OrderedDict 'хранит объекты порядка, добавляются к ним, поэтому должен быть указан порядок' object.DATE '. Вы можете легко проверить порядок, что, печатая или регистрируя что-либо каждый раз, когда выполняется оператор 'myOrderedDict [object.DATE] = []'. Кроме того, как вы печатаете его содержимое? – martineau
Я согласен с Martijn и martineau - возможно, вы думаете, что это должен быть «отсортированный дикт», но вы возвращаете элементы обратно в том порядке, в который вы их вставили (что является документированным поведением). Если вы хотите, чтобы он отсортировался, сделайте что-то вроде отсортированного (myOrderedDict.items()) –