orderedDict.values()、.keys()、.iterkeys() 等是否按照第一次插入项目的顺序返回值?
我假设 values\keys 函数不会改变字典的顺序,如果它是orderedDict,那么我会按照它们添加到字典的顺序获取值。
确实如此?
orderedDict.values()、.keys()、.iterkeys() 等是否按照第一次插入项目的顺序返回值?
我假设 values\keys 函数不会改变字典的顺序,如果它是orderedDict,那么我会按照它们添加到字典的顺序获取值。
确实如此?
orderedDict.values()、.keys()、.iterkeys() 等是否按照第一次插入项目的顺序返回值?
是的,它们被保存了下来。从文档(强调我的):
OrderedDict 对象之间的相等性测试是顺序敏感的,并且实现为list(od1.items())==list(od2.items())。
这就是相等比较的完成方式,这意味着 的结果items()
是有序的。现在对于其他两个函数,您可以在此处查看 OrderedDict 的替代实现
你的假设是正确的。OrderedDict
维护一个(因此排序的)键列表以迭代值和键,因此它们将始终以与for
循环相同的方式排序。
源代码中的注释也说明了这一点,说:
继承的 dict 提供
__getitem__
,__len__
,__contains__
和get
. 其余方法是顺序感知的。所有方法的 Big-O 运行时间与常规字典相同。
强调我的。