up:: Python
py 辞書逆検索
mydict = {'george': 16, 'amber': 19}
print(list(mydict.keys())[list(mydict.values()).index(16)]) # Prints george
それぞれリスト化するとインデックスは同じであることを利用する。
リスト化したmydict.values()
から.index(16)
でインデックスを抜き、リスト化したmydict.keys()
からそのインデックスの値を取り出す。
for name, age in mydict.items():
if age == search_age:
print name
小さくて重複無いなら最初のでいいが、大きい辞書なら単純にまとめてforで回す方法が早かったりする。
また、重複する値があってもprint可能。
p = dict(zip(i.values(),i.keys()))
被ってないなら逆順辞書を作っておくのも有効。
zipにまとめて放り込むだけ。