【发布时间】:2020-10-31 17:05:30
【问题描述】:
给定元组列表[("x", 3); ("num", 17); ("y", 7); ("x", 5)] 创建一个字典,如果有相等的键,它们的值将被求和。所以在这个例子中,应该创建一个这样的字典
[("x", 8); ("num", 17); ("y", 7)]; 字典中的顺序无关紧要。
这是我试过的代码:
module MS = Map.Make(String);;
let f l = List.fold_left (fun acc (key, value) -> MS.add key value acc) MS.empty l;;
let f1 = f [("x", 3); ("num", 17); ("y", 7); ("x", 5)];;
MS.bindings f1;;
但它不断覆盖相同键的值(输出为[("num", 17); ("x", 5); ("y", 7)])
【问题讨论】:
-
你在哪里尝试求和?
-
MS.add将(key, value)插入(即添加)到字典中,它不会将多个值相加。当您插入一个已经在字典中的key时,它会被覆盖(因此您看到的结果)。 -
也许我没有把问题说得对;
-
我不知道如何求值的总和,所以我只是将它们添加到字典中。我怎样才能把总和? (TY)
-
使用
+运算符,例如1 + 2.
标签: ocaml