私はこれの実装をいくつか見てきました。最高と見なされているか、標準として浮上しているものはありますか?Pythonで最もよく命令された辞書実装は何ですか?
私が注文した辞書の意味は、オブジェクトにはPHPの配列に似たキーの順序のコンセプトがいくつかあるということです。
odict PEP 372は強力な候補のようですが、それが勝者であることは全く明らかではありません。
私はこれの実装をいくつか見てきました。最高と見なされているか、標準として浮上しているものはありますか?Pythonで最もよく命令された辞書実装は何ですか?
私が注文した辞書の意味は、オブジェクトにはPHPの配列に似たキーの順序のコンセプトがいくつかあるということです。
odict PEP 372は強力な候補のようですが、それが勝者であることは全く明らかではありません。
標準は見ていません。誰もが自分のロールを出すようだ(this questionへの回答を参照)。 PEP 372のOrderedDict
patchを使用できる場合は、これが最良の方法です。 stdlibに含まれているものは、今から1年か2年後に誰もが使用している可能性が非常に高いです。
レイモンド・ヘッティンガーによるこの1は、ドロップイン代替collections.OrderedDict用のPython 2.7で表示されますです:http://pypi.python.org/pypi/ordereddict
ドキュメントは、それは、Python 2.7でどうなるかと同等だと言うのコレクションのDEV版、おそらく、Pythonに付属するものへのスムーズな移行である可能性が高いでしょう。
私はあなたがeasy_install ordereddict
でそれをインストールすることができますので、は、PyPIに入れ、そしてそのようにそれを使用しました:
from ordereddict import OrderedDict
d = OrderedDict([("one", 1), ("two", 2)])
Raymond Hettingerのordereddictは、collections.OrderedDictよりも短く見えます。私はcollections.OrderedDictがRaymondのものよりも優れていると思っていました。どのようにして、標準パッケージに含まれているものは、他のパッケージほどうまくいかないのでしょうか? – FrostNovaZzz
@FrostNovaZzz collections.OrderedDictはこれまでにはるかに多くの使用を見ていますので、 "控えめな"違いは実際にはバグ修正です。 – shoyer
のPython 2.7およびそれ以降のバージョンにあなたがそのよう考慮する必要がありますので、collections
モジュールでOrderedDictを持っています'標準'。その機能が十分であれば、おそらくそれを使用しているはずです。
しかし、その実装方法は最小限です。十分でない場合は、Foord/Larossaまたはordereddictでodictを参照してください(その場合はより適切です)。どちらの実装も、collections.OrderedDict
によって提供される機能のスーパーセットです。両者の違いは、odict
は純粋なpythonであり、ordereddict
ははるかに高速のC
拡張モジュールです。
最小限のアプローチは、必要な機能をすべて備えていても必ずしも優れているわけではありません。 collections.OrderedDict
は、OrderedDict
のrepr()
を独自の値のいずれかにネストした場合、最初はbugでした。以前に発見された可能性のあるバグには、サブセット、OrderedDictが処理できる小さなサブセット、古いユニットテストのユニットテストが使用されていたordereddict
。
あなたの仕事のおかげで、アンソン!私はあなたの命令を受けようとしていましたが、あなたのウェブサイトのzipとtarの両方のアーカイブは死んでいました。さらに、私はこのプロジェクトがまだ生きているのか少し気になりますか?将来のPythonで更新される予定ですか?また、それをピップに置くともっと人気が出るかもしれませんか?あなたのウェブサイトで7倍のスピードアップを見ていますが、なぜPython開発者がこの実装をPythonのデフォルトとして選択しなかったのか分かりません。 – jichi
@jichi私は 'ordereddict'を[bitbucket](https://bitbucket.org/ruamel/ordereddict)に移動し、' pip'でインストール可能にしています。 tatの後、私はPython 3.Xの互換性についても見ていきます(おそらく、collections.OrderedDictのような機能を備えた、切り捨てられたバージョンに基づいています)。ウェブサイトのリンクが再び機能するはずです。 – Anthon
偉大な、リンクは今動作します。あなたの仕事に感謝します! – jichi
collections.OrderedDict
が現在広く使用できるはずですが、パフォーマンスが懸念される場合は、cyordereddictパッケージを使用することを検討してください。標準ライブラリのOrderedDict to Cythonへの直接的な移植で、2〜6倍高速です。
-1:「ベスト」は定義されていません。 –