代码之家  ›  专栏  ›  技术社区  ›  James Hiew

OrderedDict在Python3.7中是否会变得多余?

  •  42
  • James Hiew  · 技术社区  · 6 年前

    Python 3.7 changelog :

    插入顺序的保存性质 dict 物体 has been declared 成为python语言规范的正式部分。

    这是否意味着 OrderedDict 会变得多余吗?我能想到的唯一用途是保持与旧版本python的向后兼容性,后者不保留普通字典的插入顺序。

    1 回复  |  直到 6 年前
        1
  •  71
  •   Chris_Rands    6 年前

    不,它在Python3.7中不会变得多余,因为 OrderedDict 不仅仅是 dict 它保留了插入顺序,还提供了顺序相关的方法, OrderedDict.move_to_end() ,和支架 reversed() 迭代*。

    此外,平等比较 有序字典 对订单敏感,但对 双关语 例如,在Python3.7中:

    >>> OrderedDict([(1,1), (2,2)]) == OrderedDict([(2,2), (1,1)]) 
    False
    >>> dict([(1,1), (2,2)]) == dict([(2,2), (1,1)]) 
    True
    

    两个相关问题 here here

    *支持 回复() 正则python的迭代 双关语 是为Python3.8添加的,请参见 issue33462