假设我正在使用以下OrderedDict:
order_dict = OrderedDict([("a",1), ("b",2), ("c",3)])
在某个时候,我想获取(key,value)项并定义一个迭代器,一旦需要就开始移动它:
ordered_dict_items_iter = iter(ordered_dict.items())
...
key,val = next(ordered_dict_items_iter)
...
我想知道order_dict.items()
是否也会保持相同的顺序
正如我所观察到的,它似乎确实保持了秩序,但我无法证明这一点
是的,它将保留您在初始化字典时指定的顺序
是的。
OrderedDict
的思想是,is的行为就像一个字典,但在内部它是一个元组列表,表示键值对,所以顺序是保持不变的。所有字典方法都使用这个元组列表进行复制注意:在python3.7之后,标准字典也保证保持插入顺序
是的
OrderedDict.items()
将按插入顺序返回items
如果检查
OrderedDict
的implementation,可以看到items
返回_OrderedDictItemsView
如果你深入挖掘并找到
_OrderedDictItemsView
的implementation如果你深入查看_collections_abc.ItemsView,你会发现
再往下走MappingView,你会看到
现在我们的旅程已经到达了目的地,我们可以看到
_mapping
就是我们创建的OrderedDict
,它总是井然有序的。__iter__
方法ItemsView
,只是遍历OrderedDict
中的每个键值。因此证明:)相关问题 更多 >
编程相关推荐