gpt4 book ai didi

python - OCaml 将字符串映射到字符串列表

转载 作者:太空狗 更新时间:2023-10-30 00:54:44 26 4
gpt4 key购买 nike

我正在尝试在 OCaml 中创建一个字典,将一个字符串映射到一个字符串列表。我引用了 this基本字符串到字符串映射的教程,但我需要一些帮助来制作列表。

这是我想用 Python 做的事情:

>>> food = {}
>>> food["fruit"] = ("blueberry", "strawberry", "kiwi")
>>> food["veggie"] = ("broccoli", "kale")
>>> for k in food:
... for v in food[k]:
... print k, "-->",v
...
fruit --> blueberry
fruit --> strawberry
fruit --> kiwi
veggie --> broccoli
veggie --> kale

提前致谢

最佳答案

你可以只使用列表,

let food = [
"fruit", ["blueberry"; "strawberry"; "kiwi"];
"veggie", ["broccoli"; "kale"]
]

并使用 List.assoc 访问它:

List.assoc "fruit" food

将评估为

- : string list = ["blueberry"; "strawberry"; "kiwi"]

如果您需要使用对数搜索的真实 map ,那么您可以使用Map 模块。在标准库中,它提供了一个仿函数 Make,它将为用户提供的数据创建 map ,例如,

module Strings = Map.Make(String)

将创建一个模块 Strings,它是从 string 类型到任何其他类型的映射。您可以轻松地使用列表作为您的值类型:

let map = Strings.empty 
Strings.add "fruit" ["blueberry"; "strawberry"; "kiwi"] map

当然,这将创建一个永久 map 。如果您需要一个可变映射,就像在 Python 中一样,那么您需要一个 Hashtbl 模块。

这是一个使用 Hashtbl 的例子:

let food = Hashtbl.create 16
Hashtbl.add food "fruit" ["blueberry"; "strawberry"; "kiwi"]
Hashtbl.add food "veggie" ["broccoli"; "kale"]
Hashtbl.find food "veggie"

将评估为

- : string list = ["broccoli"; "kale"]

关于python - OCaml 将字符串映射到字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35069921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com