Обратное отображение словаря с помощью Python
Возможный дубликат:
Обратный поиск в словаре - Python
Если у меня есть словарь с именем ref, как указано ниже
ref = {}
ref["abc"] = "def"
Я могу получить "def" от "abc"
def mapper(from):
return ref[from]
Но как я могу получить от "def" до "abc"?
def revmapper(to):
??????
Ответы
Ответ 1
Если вы делаете это часто, вам нужно создать обратный словарь:
>>> rev_ref = dict((v,k) for k,v in ref.iteritems())
>>> rev_ref
{'def': 'abc'}
>>> def revmapper(to):
... return rev_ref[to]
Если это редко, и вам все равно, если он неэффективен, сделайте следующее:
>>> def revmapper(to):
... for k,v in ref.iteritems():
... if v == to: return k
Ответ 2
Вы можете сделать обратный словарь:
revdict = dict((v,k) for k,v in ref.items())
затем посмотрите, что вы хотите:
assert revdict["def"] == "abc"
Обратите внимание, что это не сработает, если две клавиши соответствуют одному значению.
Ответ 3
dict(map( lambda a:[a[1],a[0]], d.iteritems() ))