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(或现有库)中的结构。