2009-03-17 24 views
13

LinkedHashMapは、予測可能な繰り返し順序を持つHas​​htableのようなデータ構造(Pythonのdict)のJava実装です。つまり、すべてのキーをたどる間、挿入によって順序付けられます。これは、挿入順序を維持している追加のリンクリストによって行われます。PythonのLinkedHashMapに相当します。

Pythonに相当するものはありますか?

答えて

10

リストを維持して挿入順序を追跡することで同じことができますが、Python 2.7Python >=3.1には、コレクションモジュールにOrderedDictクラスがあります。

2.7より前にサブクラスdictfollowing this recipeをサブクラス化できます。

+0

OrderedDictはPython 3.1で提供されていますが、リンクしたドキュメントによれば3.0にはまだありません。 – kquinn

+0

はい、そうです、私はそれを見落としました。編集されました。 – sykora

1

私はそうは思わない。あなたはdictとリストを使う必要があります。しかし、あなたはクラス内でそれを簡単に包み込み、keys__getitem____setitem__などを定義して、あなたが望むように動作させることができます。

2

私はこれがあなたが求めているものであるかどうかわからない:あなたがordereddictモジュールを使用して挿入するために、DICを注文することができます

>>> dic = {1: 'one', 2: 'two'} 
>>> for k, v in dic.iteritems(): 
...  print k, v 

d = ordereddict(dic, relax=True) 
+0

私は '' dict.iteritems''が挿入順に基づいて順序付けを提供するとは思わない... – sykora

+0

正しい!それにはordereddictモジュールを使用する必要があります。 – aatifh

関連する問題