Если у меня есть словарь с именем ref, как указано ниже
ref = {}
ref["abc"] = "def"
Я могу получить «def» от «abc»
def mapper(from):
return ref[from]
Но как я могу получить от «def» до «abc»?
def revmapper(to):
??????
Если у меня есть словарь с именем ref, как указано ниже
ref = {}
ref["abc"] = "def"
Я могу получить «def» от «abc»
def mapper(from):
return ref[from]
Но как я могу получить от «def» до «abc»?
def revmapper(to):
??????
Если вы делаете это часто, вам нужно создать обратный словарь:
>>> 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
Вы можете сделать обратный словарь:
revdict = dict((v,k) for k,v in ref.items())
затем посмотрите, что вы хотите:
assert revdict["def"] == "abc"
Обратите внимание, что это не сработает, если две клавиши соответствуют одному значению.
dict(map( lambda a:[a[1],a[0]], d.iteritems() ))
Что означает четвертое число в строковой схеме версии Java 9?
Начало Haskell - получение ошибки «не в области: конструктор данных»