目录与Python的反向映射如何实现?

  • 回答 (2)
  • 关注 (0)
  • 查看 (53)

如果我有一个名为ref的目录,如下所示

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

我可以从“abc”中得到“def”。

def mapper(from):
    return ref[from]

但是,我怎样才能从“def”到“abc”呢?

def revmapper(to):
    ??????
RexsenRexsen提问于
皮皮洽移动互联网、心里咨询师、产品设计经理回答于
已采纳

如果经常这样做,将需要构建一个反向目录:

>>> 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
MH小夜雨时学生回答于

你可以做一个反向目录:

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

查查你想要的:

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

注意,如果两个键映射到相同的值,这将无法工作。

扫码关注云+社区

领取腾讯云代金券