Подтвердить что ты не робот

Обратное отображение словаря с помощью Python

Возможный дубликат:
Обратный поиск в словаре - Python

Если у меня есть словарь с именем ref, как указано ниже

ref = {}
ref["abc"] = "def"

Я могу получить "def" от "abc"

def mapper(from):
    return ref[from]

Но как я могу получить от "def" до "abc"?

def revmapper(to):
    ??????
4b9b3361

Ответ 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() ))