orderedDict.values(),. keys(),。otkeys()等是否按照首次插入项目的顺序返回值?
我假设values \ keys函数不会改变dict的顺序,如果它是orderedDict,那么我按照它们被添加到字典中的顺序得到值。
那是真的吗?
答案 0 :(得分:0)
你的假设是正确的。 OrderedDict
维护一个(因此排序的)键列表来迭代值和键,因此它们的排序方式与for
循环中的排序方式相同。
source code中的评论也说明了这一点:
继承的词典提供
__getitem__
,__len__
,__contains__
和get
。 其余方法是订单感知的。所有方法的Big-O运行时间与常规字典相同。
强调我的。
答案 1 :(得分:0)
orderedDict.values(),. keys(),。otkeys()等是否按照首次插入项目的顺序返回值?
是的,它们被保留了下来。从文档(强调我的):
OrderedDict对象之间的等式测试是顺序敏感的 实现为列表(od1.items())== list(od2.items())。
这是如何进行平等比较的,这意味着items()
的结果是有序的。现在,对于其他两个函数,您可以查看substitute implementation for OrderedDict here