-1

orderedDict.values()、.keys()、.iterkeys() 等是否按照第一次插入项目的顺序返回值?

我假设 values\keys 函数不会改变字典的顺序,如果它是orderedDict,那么我会按照它们添加到字典的顺序获取值。

确实如此?

4

2 回答 2

0

orderedDict.values()、.keys()、.iterkeys() 等是否按照第一次插入项目的顺序返回值?

是的,它们被保存了下来。从文档(强调我的):

OrderedDict 对象之间的相等性测试是顺序敏感的,并且实现为list(od1.items())==list(od2.items())。

这就是相等比较的完成方式,这意味着 的结果items()是有序的。现在对于其他两个函数,您可以在此处查看 OrderedDict 的替代实现

于 2013-12-11T09:27:08.067 回答
0

你的假设是正确的。OrderedDict维护一个(因此排序的)键列表以迭代值和键,因此它们将始终以与for循环相同的方式排序。

源代码中的注释也说明了这一点,说:

继承的 dict 提供__getitem__, __len__,__contains__get. 其余方法是顺序感知的。所有方法的 Big-O 运行时间与常规字典相同。

强调我的。

于 2013-12-11T09:24:14.447 回答