有没有比双向存储字典更好的方法来存储双向字典?[重复]


问题内容

这个问题已经在这里有了答案

如何实现高效的双向哈希表? (7个答案)

7年前关闭。

给定生成的一对一字典(= bijection)

for key, value in someGenerator:
     myDict[key] = value

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

    invDict[value] = key

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


问题答案:

我过去所做的工作是创建一个reversedict函数,该函数将接受一个dict并返回相反的映射,如果我知道它是一对一的,则将值赋给键(两次看到相同的值会抛出异常),或者如果不是,则为键列表的值。这样,不必每次都需要反向查找时都同时构造两个字典,我可以像平常一样创建字典并在最后调用通用reversedict函数。

但是,似乎乔恩在评论中提到的二分法解决方案可能是更好的方案。(我的reversedict职能似乎是他的二分法~运算符)。