用Python进行字典反向映射

18 投票
3 回答
15841 浏览
提问于 2025-04-16 01:06

可能重复的问题:
反向字典查找 - Python

如果我有一个叫做 ref 的字典,内容如下:

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

我可以通过 "abc" 得到 "def"

def mapper(from):
    return ref[from]

但是,我该如何从 "def" 得到 "abc" 呢?

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

3 个回答

2

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这些问题可能是因为我们写的代码有bug,或者是因为我们没有正确使用某些工具或库。

当我们在网上寻找解决方案时,StackOverflow是一个非常有用的地方。这里有很多程序员分享他们的经验和解决方案。如果你在某个地方卡住了,可以在这个网站上搜索相关的问题,看看别人是怎么解决的。

如果你找到一个问题和你的情况很相似,记得仔细阅读答案。有时候,答案里会有代码示例,帮助你更好地理解如何解决问题。

总之,遇到问题不要慌,先查查StackOverflow,看看有没有人遇到过类似的情况,或许能找到解决的办法。

dict(map( lambda a:[a[1],a[0]], d.iteritems() ))
6

你可以创建一个反向字典:

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

然后查找你想要的内容:

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

注意,如果两个键对应同一个值,这样的方法就不管用了。

23

如果你经常需要这样做,那你可能想要建立一个反向字典:

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

撰写回答