OrderedDictはPython3.7で冗長になりますか?


92

以下からのPython 3.7のchangelog

dictオブジェクトの挿入順序の保持の性質は、Python言語仕様の公式部分であると宣言されています。

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


回答:


137

いいえ、Python 3.7では冗長になることはありません。これは、が挿入順序を保持するOrderedDictだけでなくdict、順序に依存するメソッド、を提供し、反復OrderedDict.move_to_end()をサポートするためreversed()です*。

さらに、との等価性の比較OrderedDictは順序に依存しますがdict、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つの関連する質問。

*reversed()通常のPythonの反復のサポートがPython3.8にdict追加されました。issue33462を参照してください


1
比較するときの順序感度に関するポイントは、ここで非常に有効です。
Tim SkovJacobsen20年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.