<分区> 分区>
Possible Duplicate:
Efficient bidirectional hash table in Python?
我正在研究一个 AST 解析器,它解析 python 代码。首先,我通过调用 compile 将 python 代码转换为 AST。
这样做时,我需要确保我不会编译同一个导入模块两次,即使有两次调用导入它也是如此。
目前,我可以检测到这两个调用是等价的:
import modname as mod
import modname as mod
我维护一个字典,将(在本例中)mod 映射到 modname。我不仅用它来检测 modname 是否已经被导入,而且还用于其他一些簿记功能。
现在,我无法检测到以下三个调用导入了相同的模块:
import modname as mod
import modname as foo
import modname
我知道我可以通过使用 set 包含 modname 并在编译 modname 第二个之前检查这个集合来轻松绕过这个问题时间。然而,这需要另一 block 线性空间。
我可以对字典进行线性传递以检查是否有任何键映射到 modname 的值,但这违背了使用字典的目的。
因此我的问题是:是否存在一种“双向 dict”的数据结构 - 一种将其键映射到值并且其值可以在 O(1) 时间内查找的数据结构好吗?
