【问题标题】:Python OrderdDict values() function saves the order?Python OrderedDict values() 函数保存订单?
【发布时间】:2013-12-11 09:19:32
【问题描述】:

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

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

这是真的吗?

【问题讨论】:

    标签: python dictionary ordereddictionary


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      source code 中的 cmets 也声明了这一点,说:

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

      强调我的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-21
        • 1970-01-01
        • 1970-01-01
        • 2014-01-23
        • 2021-12-19
        • 2016-04-20
        相关资源
        最近更新 更多