给出这样的字典:
my_map = {'a': 1, 'b': 2}
Run Code Online (Sandbox Code Playgroud)
如何反转此地图以获得:
inv_map = {1: 'a', 2: 'b'}
Run Code Online (Sandbox Code Playgroud)
编者注: __CODE__改为__CODE__避免与内置函数冲突,__CODE__.下面有些评论可能会受到影响.
我有一个问题,需要一个可逆的1:1键到值的映射.
这意味着有时我想找到一个给定键的值,但有时我想找到给定值的键.键和值都保证唯一.
x = D[y]
y == D.inverse[x]
Run Code Online (Sandbox Code Playgroud)
显而易见的解决方案是每次我想要反向查找时简单地反转字典:反转字典非常容易,这里有一个配方但是对于大字典它可能非常慢.
另一种方法是创建一个新的类,它将两个字典统一起来,每个字典对应一种查找.这很可能很快,但会消耗两倍于单个字典的内存.
那么我可以使用更好的结构吗?
我有一个对象字典:
dic = {'k1':obj1, 'k2':obj2, 'k3':obj3, ...}
class MyObject:
def __init__(self,x,y):
self.x=x
self.y=y
Run Code Online (Sandbox Code Playgroud)
我想知道如何找到与值对应的键的最佳实现。相当于:
def find_key(dic, val):
for k,v in dic.items():
if v==val:
return k
return None
Run Code Online (Sandbox Code Playgroud)
注意:抱歉,如果这是显而易见的,我是 Python 新手:-)