1. ホーム
  2. python

[解決済み] Python 3.7でOrderedDictは冗長になるのか?

2022-10-06 19:57:34

質問

からの Python 3.7 チェンジログ :

の挿入順保持の性質は ディクショナリ オブジェクト が宣言されています。 は Python 言語仕様の公式な一部であると宣言されています。

ということになるのでしょうか。 OrderedDict は冗長になるのでしょうか?私が思いつく唯一の用途は、通常の辞書の挿入順を保持しない古いバージョンのPythonとの後方互換性を維持することです。

どのように解決するのですか?

Python 3.7では冗長になることはないでしょう。 OrderedDict は単なる dict は挿入順を保持するだけでなく、順序依存のメソッドを提供します。 OrderedDict.move_to_end() をサポートし、さらに reversed() の繰り返し*をサポートします。

さらに、等式比較で OrderedDict は順序を考慮しますが、これはまだ dict にはまだ当てはまりません。

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

二つの関連する質問 ここで はこちら .

* サポートする reversed() の繰り返しをサポートします。 dict は Python 3.8 で追加されました。 issue33462