построить словарь для ключа поиска по значению

словарь обычно хорош для поиска значения по ключу, но найти ключ по значению довольно медленно

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

существует ли уже структура данных, которые делают как ключ-> значение, так и ke

3 Solutions collect form web for “построить словарь для ключа поиска по значению”

Вы можете попробовать 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] возвращает список ключей, которые удерживают это значение.

Если ваши значения также уникальны, вместо defaultdict можно использовать простой dict:

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

или, в python 3, где items() – это словарь:

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

Python 3:

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

( .iteritems() этого Python 2 использует .iteritems() )

Python - лучший язык программирования в мире.