をインデックスのキーを取得する:私は辞書で、インデックスのキーを取得するにはどうすればよい
Inverse dictionary lookup - Python
reverse mapping of dictionary with PythonPythonの:可能な重複辞書に
?以下のような例えば
:
i = {'a': 0, 'b': 1, 'c': 2}
ので、私は私のキーを取得したい場合は、[0]、それは定義辞書により、「」
をインデックスのキーを取得する:私は辞書で、インデックスのキーを取得するにはどうすればよい
Inverse dictionary lookup - Python
reverse mapping of dictionary with PythonPythonの:可能な重複辞書に
?以下のような例えば
:
i = {'a': 0, 'b': 1, 'c': 2}
ので、私は私のキーを取得したい場合は、[0]、それは定義辞書により、「」
は順不同であり、したがって、インデックスを作成することはできませんが返されます。そのような機能のためには、順序付き辞書を使用してください。 Python Ordered Dictionary
Python辞書にはキーと値があります。あなたが求めているのは、与えられた値を指しているキーです。
あなただけのループ内でこれを行うことができます:辞書に値ごとに複数のキーがあることを
[k for (k, v) in i.iteritems() if v == 0]
注意を。 {'a': 0, 'b': 0}
は完全に合法です。
あなたはどちらかではなく、リストまたはOrderedDict instanceを使用する必要がありますを注文する場合:しかし、あなたはを変更するたびに
i={'foo':'bar', 'baz':'huh?'}
keys=i.keys() #in python 3, you'll need `list(i.keys())`
values=i.values()
print keys[values.index("bar")] #'foo'
:
items = ['a', 'b', 'c']
items.index('a') # gives 0
items[0] # gives 'a'
これは彼が求めていたものだとは思わない。彼はリストのような番号の付いた位置を使って「索引付け」したいと思っています。 –
@PaulSeeb:OPが何を意味しているかを推測しています。 –
あなたはこのような何かを行うことができます辞書が注文されていないので、キー、値を更新する必要があります。新しいキーと値のペアを挿入するたびに、あなたが考えていた順序は消え、新しい(多かれ少なかれランダムな)順序に置き換えられます。したがって、辞書でインデックスを尋ねることは意味をなさない。
あなたが求めているのは、おそらくあなたが実際に望むものではないことにも注意してください。辞書の逆マッピングが一意であるという保証はありません。言い換えれば、あなたは以下の辞書のかもしれない。その場合
d={'i':1, 'j':1}
を、あなたがi
やj
をしたいし、実際にはここには答えはあなたを伝えることはできないだろうかどうかを知ることは不可能である('i'
または'j'
)が選択されます(辞書は順不同です)。あなたはその状況で何をしたいですか?あなたは受け入れ可能なキーのリストを得ることができます...しかし、私は辞書のあなたの基本的な理解は、かなり正しくはないと思っています。
辞書は、キーと値のペアの順序付けられていないコレクションです。あなたはキーと値のペアのインデックスを持つことはできません。キーと値の同じインデックス値を使用して、2つの順序付きリストに保存することができます。キーリストの特定のインデックスにある各キーについて、関連する値を値リストから取得できます。
または、順序付き辞書を使用することをお勧めします。このordered list
あなたは*値をマップする*バック
...( '第2'、2)、 ...( '三'、3)])
チェック鍵にpython dictにはインデックスはありません。 –
http://stackoverflow.com/questions/3221475/reverse-mapping-of-dictionary-with-pythonおよびhttp://stackoverflow.com/questions/483666/python-reverse-inverse-a-mapping –