Да.OrderedDict.items()
вернет items
в порядке их вставки.
Если вы проверите реализацию из OrderedDict
, вы увидите, что items
возвращает _OrderedDictItemsView
.
class OrderedDict(dict):
...
...
def items(self):
"D.items() -> a set-like object providing a view on D's items"
return _OrderedDictItemsView(self)
И если вы будете копать глубже и найдете реализацию из _OrderedDictItemsView
,
class _OrderedDictItemsView(_collections_abc.ItemsView):
def __reversed__(self):
for key in reversed(self._mapping):
yield (key, self._mapping[key])
И если вы пойдете глубже, проверьте _collections_abc.ItemsView , вы увидите, что
class ItemsView(MappingView, Set):
...
...
def __iter__(self):
for key in self._mapping:
yield (key, self._mapping[key])
И далее вниз по MappingView вы увидите,
class MappingView(Sized):
__slots__ = '_mapping',
def __init__(self, mapping):
self._mapping = mapping
Теперь наше путешествие достиглоэто пункт назначения, и мы видим, что _mapping
- это OrderedDict
, который мы создали, и он всегда в порядке.Метод __iter__
ItemsView
просто перебирает каждое значение ключа в OrderedDict
.Отсюда и доказательство:)