Racket有双向哈希映射吗?
也就是说,是否有一个哈希映射可以在常数时间内接收键并查找值,或者接收值并查找键呢? 我希望能够得到类似以下API的支持:
#lang racket
(define my-map (bidirectional-hash '(key1 val1) '(key2 val2)))
(bidirectional-hash-ref my-map 'key 'key1) ; => val1
(bidirectional-hash-ref my-map 'val 'val2) ; => key2
符号key
和val
告诉哈希映射它正在接收一个值并查找一个键,或者正在接收一个键并查找一个值。在这两种情况下,我希望这可以在常量O(1)时间内完成。
我知道可以通过使用彼此反转的两个哈希表来实现这一点,但我想要的是一个内置于Racket(或现有库)中的结构。
(bidirectional-hash-ref my-map 'key 'key1)
,对吗? - Alex Knauth