OCAML hashtbl删除特定绑定

OCAML hashtbl删除特定绑定,ocaml,hashtable,Ocaml,Hashtable,我使用哈希表作为多重映射,我想删除以前的任何绑定。 Hashtbl.remove只删除当前绑定。 我正在考虑类似于删除散列x的东西,它删除了y到x的绑定。 如果存在多个绑定x y,则应删除其中一个绑定。 我有一些工作代码,但它太复杂和缓慢(包括循环等) 我希望它能像这样工作: Hashtbl.find_all hash 1;; 返回[1;2;3;3;4] 删除散列1 3 Hashtbl.find_all hash 1;; 返回[1;2;3;4]我要说的是,Hashtbl的设计目的并不是这样的,所

我使用哈希表作为多重映射,我想删除以前的任何绑定。 Hashtbl.remove只删除当前绑定。 我正在考虑类似于删除散列x的东西,它删除了y到x的绑定。 如果存在多个绑定x y,则应删除其中一个绑定。 我有一些工作代码,但它太复杂和缓慢(包括循环等)

我希望它能像这样工作:

Hashtbl.find_all hash 1;; 返回[1;2;3;3;4]

删除散列1 3

Hashtbl.find_all hash 1;;
返回[1;2;3;4]

我要说的是,Hashtbl的设计目的并不是这样的,所以它不会特别方便。
Hashtbl
中没有用于删除或添加多个键绑定的函数,因此您必须一次添加和删除一个键绑定。您的迭代解决方案可能与您预期的一样好


最好显式处理多个绑定,即将每个键绑定到一组显式(多)值。这将在更改绑定时提供比线性更好的行为。

为什么不返回[1;2;4]?散列x y是否应该只解除x到y的一个绑定?