2012-03-30 12 views
3

Pythonでは、アイテムが追加された順番でキーのリストを取得する方法はありますか?Python:追加された順に辞書キーを取得しますか?

String.compareMethods = {'equals': String.equals, 
         'contains': String.contains, 
         'startswith': String.startswith, 
         'endswith': String.endswith} 

ここに表示されているキーは選択(ドロップダウン)ボックスのため、順序が重要です。

個別のリストを保持しない方法がありますか(やりたいことを過度に複雑にしないでください)?私が見ていることは、ハッシングが原因で可能ではありません...

私はPython 2.6.xを使用しています。

答えて

9

Python 2.7+ではcollections.OrderedDict、Pythonの場合はOrderedDict from PyPIを使用してください。あなたはpip install ordereddictまたはeasy_install ordereddictでPython 2.4-2.6のためにそれをインストールできるはずです。

dictのサブクラスであるため、dictを取るメソッドはOrderedDictも受け入れます。

+1

このようにカスタムディクテーションを追加する方法はあります。私は通常のPython環境ではほとんどの人がそうではないので、私はこれが「複雑すぎるもの」として適格かどうかをチェックする必要があります。 – Kawu

+0

@Kawuこれは単一のクラスです。パッケージが基づいているレシピhttp://code.activestate.com/recipes/576693/を参照してください。必要に応じて既存のモジュールにコピー・ペーストするだけで、複雑なことは何もありません。 – agf

+0

はい、もちろんですが、それはまあまあです。私はおそらく、このスクリプトを実行しているバージョンを予見できないので、そうする必要があります。そうでなければ、バージョンをチェックして、Pythonが提供する 'OrderedDict'を使用するためにいくつかの条件付きロジックを使用しなければなりません。それが可能かどうかわからないし、それが望ましいかどうかわからない。 – Kawu

2

必要なものはOrderedDictとなります。

from collections import OrderedDict 

d = OrderedDict(); 
d['equals'] = String.equals 
d['contains'] = String.contains 
# ... 
+0

はい、彼はPython 2.6上にあるので、' collections.OrderedDict'はありません。 – agf

+0

正確には、これが追加情報を追加した理由です。 – Kawu

関連する問題