是的。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
. 因此证明:)