Python OrderedDict values()函数保存顺序?

时间:2013-12-11 09:19:32

标签: python dictionary ordereddictionary

orderedDict.values(),. keys(),。otkeys()等是否按照首次插入项目的顺序返回值?

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

那是真的吗?

2 个答案:

答案 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