Racket 球拍中的双向HashMap

Racket 球拍中的双向HashMap,racket,bimap,Racket,Bimap,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) ;

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
告诉哈希映射,它被赋予了一个val,并在寻找一个键,或者被赋予了一个键,并在寻找一个val。在这两种情况下,我希望这是在恒定的O(1)时间内完成的


我知道你可以通过使用两个相互颠倒的哈希表来实现这一点,但我希望在Racket(或现有库)中内置一个结构。

据我所知,没有类似的结构。但是您可以使用一个哈希表,然后放入(K,V)和(V,K)并正常使用。

您的意思可能是
(双向哈希引用我的映射'key'键1)
,对吗?