Racket中的双向HashMap

Lei*_*sen 7 bimap racket

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
Run Code Online (Sandbox Code Playgroud)

符号keyval告诉哈希映射它被赋予val,并寻找一个键,或给一个键,并寻找一个val.在这两种情况下,我希望在恒定的O(1)时间内完成.

我知道你可以通过使用两个彼此反转的哈希表来实现这一点,但我想要一个构建在Racket(或现有库)中的结构.

KIM*_*oon 0

据我所知,没有这样的事情。但是你可以用一个哈希表,放入(K,V)和(V,K)就可以正常使用了。