是否有更好的方法来存储双向字典而不是存储它的反向分离?

Tob*_*ler 13 python dictionary

给出一对一的词典(=双射)生成àla

for key, value in someGenerator:
     myDict[key] = value
Run Code Online (Sandbox Code Playgroud)

可以通过添加来简单地创建反向查找字典

    invDict[value] = key
Run Code Online (Sandbox Code Playgroud)

for循环.但这是一种Pythonic方式吗?我是否应该编写另外一个class Bijection(dict)管理这个反向字典并提供第二个查找功能的?或者这样的结构(或类似结构)是否已经存在?

Cla*_*diu 6

我在过去所做的是创建了一个reversedict函数,它将获取一个dict并返回相反的映射,如果我知道它是一对一的值,则为键值(在看到两次相同的值时抛出异常),或者值的列表,如果不是.这样,每次我想要反向查找时,不必同时构造两个dicts,我可以正常创建我的dicts,并在最后调用泛型reversedict函数.

然而,似乎Jon在评论中提到的bidict解决方案可能是更好的解决方案.(我的reversedict功能似乎是他的竞争对手~).