将哈希表转换为 OCaml 中的对列表(键、值)
Posted
技术标签:
【中文标题】将哈希表转换为 OCaml 中的对列表(键、值)【英文标题】:Converting hash table to list of pairs (key,value) in OCaml 【发布时间】:2011-05-02 21:04:56 【问题描述】:有没有办法将哈希表转换为 OCaml 中的(键、对)值列表?
我知道,给定一个哈希表 ht
我们可以做到
BatList.of_enum (BatHashtbl.enum ht)
使用电池库。这会将表转换为枚举,然后将枚举转换为列表。但我正在寻找不使用电池库的解决方案。在standard OCaml Hashtbl Module 中似乎没有一种方法可以将这些对提取为列表,也没有一种方法可以组合其功能来实现此目的。有什么建议吗?
【问题讨论】:
顺便说一句,我认为在你看过的问题中说(就像你在这里所做的那样)是非常好的做法:它有助于在正确的水平上提供答案,表明你已经尝试过,并且节省了我查找 Hashtbl.fold 类型的时间 :) (我不知道,但根据经验,当它被称为fold
时,类型是 fold_right
的类型)
【参考方案1】:
在标准的 OCaml Hashtbl 模块中似乎没有...
当然有!
val fold : ('a -> 'b -> 'c -> 'c) -> ('a, 'b) t -> 'c -> 'c
所以,使用:
fun h -> Hashtbl.fold (fun k v acc -> (k, v) :: acc) h []
【讨论】:
以上是关于将哈希表转换为 OCaml 中的对列表(键、值)的主要内容,如果未能解决你的问题,请参考以下文章