Racket中的双向哈希表

7

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

符号keyval告诉哈希映射它正在接收一个值并查找一个键,或者正在接收一个键并查找一个值。在这两种情况下,我希望这可以在常量O(1)时间内完成。

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


1
你可能是指(bidirectional-hash-ref my-map 'key 'key1),对吗? - Alex Knauth
1个回答

0
据我所知,没有这样的东西。但是您可以使用一个哈希表,并放置(K,V)和(V,K),然后正常使用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接