web-dev-qa-db-ja.com

OrderedDictはPython 3.7で冗長になりますか?

Python 3.7 changelog から:

dict オブジェクトの挿入順序保存の性質 宣言されている Python言語仕様。

これは、 OrderedDict が冗長になることを意味しますか?私が考えることができる唯一の使用は、通常の辞書の挿入順序を保持しないPythonの古いバージョンとの後方互換性を維持することです。

46
James Hiew

いいえ、それはPython 3.7では冗長になりません。なぜならOrderedDictは挿入順序を保持するdictであるだけでなく、順序に依存する方法も提供するためです- OrderedDict.move_to_end() 、および reversed() iteration *をサポートします。

さらに、OrderedDictとの等値比較は順序に敏感であり、これはdict in Python 3.7、例えば:

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

関連する2つの質問 here および here

*定期的なPython dictreversed()反復のサポートPython 3.8、 issue33462を参照)

70
Chris_Rands