用Python进行字典反向映射
可能重复的问题:
反向字典查找 - 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