2

辞書は通常、キーで値を見つけるのに適していますが、値でキーを見つけるのはかなり遅いです

for k,v in dictionary.items():
    if v = myValue:
        return k

key->value と ke の両方を作成するデータ構造が既に存在しますか?

4

3 に答える 3

8

あなたはbidictを試すことができます:

>>> husbands2wives = bidict({'john': 'jackie'})
>>> husbands2wives['john'] # the forward mapping is just like with dict
'jackie'
>>> husbands2wives[:'jackie'] # use slice for the inverse mapping
'john'
于 2012-09-21T09:24:50.353 に答える
5

逆マッピングを作成するだけです:

from collections import defaultdict
inverted = defaultdict(list)
for k, v in dictionary.iteritems():
    inverted[v].append(k)

上記のコードは重複する値を処理することに注意してください。その値を保持するキーのリストinverted[v]を返します。

値も一意である場合は、代わりに単純な dict を使用できますdefaultdict

inverted = { v: k for k, v in dictionary.iteritems() }

または、Python 3 では、items()は辞書ビューです。

inverted = { v: k for k, v in dictionary.items() }
于 2012-09-21T09:25:17.840 に答える
0

パイソン 3:

revdict = {v:k for k,v in dictionary.items()}

.iteritems()(代わりにPython 2 を使用)

于 2012-09-21T09:27:37.870 に答える