使用Python反向映射字典

时间:2010-07-11 01:17:51

标签: python dictionary

  

可能重复:
  Inverse dictionary lookup - Python

如果我有一个名为ref的字典如下

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

我可以从“abc”获得“def”

def mapper(from):
    return ref[from]

但是,我如何才能从“def”变为“abc”?

def revmapper(to):
    ??????

3 个答案:

答案 0 :(得分:22)

如果您经常这样做,您将需要构建反向字典:

>>> 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

答案 1 :(得分:5)

您可以制作反向词典:

revdict = dict((v,k) for k,v in ref.items())

然后查找你想要的东西:

assert revdict["def"] == "abc"

注意,如果两个键映射到相同的值,则无效。

答案 2 :(得分:2)

dict(map( lambda a:[a[1],a[0]], d.iteritems() ))
相关问题