私はこれの多くの実装を見てきました (そして書いています)。最高と見なされているもの、または標準として登場しているものはありますか?
順序付けられた dict とは、PHP の配列と同様に、オブジェクトにキーの順序の概念があることを意味します。
PEP 372のodict は有力な候補のようですが、それが勝者であるかどうかは完全には明らかではありません。
私はこれの多くの実装を見てきました (そして書いています)。最高と見なされているもの、または標準として登場しているものはありますか?
順序付けられた dict とは、PHP の配列と同様に、オブジェクトにキーの順序の概念があることを意味します。
PEP 372のodict は有力な候補のようですが、それが勝者であるかどうかは完全には明らかではありません。
Raymond Hettinger によるこれは、Python 2.7 で表示される collections.OrderedDict のドロップイン代替です: http://pypi.python.org/pypi/ordereddict
コレクション ドキュメントの開発バージョンは、Python 2.7 に含まれるものと同等であると述べているため、おそらく Python に付属するものへの移行はスムーズに進む可能性が高いでしょう。
私はそれを PyPI に入れたので、でインストールしてeasy_install ordereddict
、次のように使用できます。
from ordereddict import OrderedDict
d = OrderedDict([("one", 1), ("two", 2)])
私は標準を見たことがありません。誰もが自分自身をロールバックしているようです (この質問への回答を参照してください)。OrderedDict
PEP 372 のパッチを使用できる場合は、それが最善の策です。stdlib に含まれているものはすべて、1 年か 2 年後に誰もが使用する可能性が非常に高くなります。
Python 2.7 以降では、モジュールに OrderedDict が含まれているcollections
ため、それを「標準」と見なす必要があります。その機能が十分である場合は、おそらくそれを使用する必要があります。
ただし、その実装アプローチは最小限であり、それで十分でない場合は、Foord/Larossa による odict または(私による) orderdict を参照する必要があります。どちらの実装も、 によって提供される機能のスーパーセットですcollections.OrderedDict
。2 つの違いは、odict
純粋な python でありordereddict
、はるかに高速なC
拡張モジュールです。
必要なすべての機能を提供する場合でも、最小限のアプローチが必ずしも優れているとは限りませcollections.OrderedDict
ん。以前のユニットテストのサブセット (OrderedDict が処理できる小さなサブセット)が使用されていれば、以前に発見できた可能性があるバグです。repr()
OrderedDict
ordereddict