辞書は通常、キーで値を見つけるのに適していますが、値でキーを見つけるのはかなり遅いです
for k,v in dictionary.items():
if v = myValue:
return k
key->value と ke の両方を作成するデータ構造が既に存在しますか?
辞書は通常、キーで値を見つけるのに適していますが、値でキーを見つけるのはかなり遅いです
for k,v in dictionary.items():
if v = myValue:
return k
key->value と ke の両方を作成するデータ構造が既に存在しますか?
あなたは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'
逆マッピングを作成するだけです:
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() }
パイソン 3:
revdict = {v:k for k,v in dictionary.items()}
.iteritems()
(代わりにPython 2 を使用)