gpt4 book ai didi

F# noob - 映射和减少单词

转载 作者:行者123 更新时间:2023-12-01 04:45:33 27 4
gpt4 key购买 nike

我正在尝试使用 F# 并尝试将单词列表的映射缩减为一个单词,计数。

这是我目前所拥有的,

let data1 = ["Hello"; "Hello"; "How"; "How"; "how"; "are"]

let map = data1 |> List.map (fun x -> (x, 1))
printfn "%A" map

给出以下输出:

val map : (string * int) list =
[("Hello", 1); ("Hello", 1); ("How", 1); ("How", 1); ("how", 1); ("are", 1)]

但是

    let reduce = ...???

现在我对如何设计一个 reduce 函数感到困惑,以便它具有单词、计数对列表。有什么建议么?我感谢您的帮助!谢谢

最佳答案

有一个内置函数:

data1 |> Seq.countBy id

这会给你一个元组序列:

val it : seq<string * int> =
seq [("Hello", 2); ("How", 2); ("how", 1); ("are", 1)]

id 函数是另一个内置函数,它接受一个值并返回相同的值,因此在这种情况下,这意味着您按字符串本身进行计数。


如果你更想要一个list而不是一个seq,你可以使用Seq.toList:

> data1 |> Seq.countBy id |> Seq.toList;;
val it : (string * int) list =
[("Hello", 2); ("How", 2); ("how", 1); ("are", 1)]

如果你想要一个 map ,这也很简单:

> data1 |> Seq.countBy id |> Map.ofSeq;;
val it : Map<string,int> =
map [("Hello", 2); ("How", 2); ("are", 1); ("how", 1)]

关于F# noob - 映射和减少单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22419548/

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