gpt4 book ai didi

Scala 映射和/或 groupby 函数

转载 作者:行者123 更新时间:2023-12-02 05:52:34 25 4
gpt4 key购买 nike

我是 Scala 新手,我正在尝试找出一些 Scala 语法。

所以我有一个字符串列表。

wordList: List[String] = List("this", "is", "a", "test")

我有一个函数,它返回包含每个单词的辅音和元音计数的对列表:

def countFunction(words: List[String]): List[(String, Int)]

例如:

countFunction(List("test")) => List(('Consonants', 3), ('Vowels', 1))

我现在想要获取单词列表并按计数签名对它们进行分组:

def mapFunction(words: List[String]): Map[List[(String, Int)], List[String]]

//using wordList from above
mapFunction(wordList) => List(('Consonants', 3), ('Vowels', 1)) -> Seq("this", "test")
List(('Consonants', 1), ('Vowels', 1)) -> Seq("is")
List(('Consonants', 0), ('Vowels', 1)) -> Seq("a")

我想我需要使用 GroupBy 来执行此操作:

def mapFunction(words: List[String]): Map[List[(String, Int)], List[String]] = { 
words.groupBy(F: (A) => K)
}

我已经阅读了 Map.GroupBy 的 scala api,发现 F 代表鉴别器函数,K 是您想要返回的键的类型。所以我尝试了这个:

    words.groupBy(countFunction => List[(String, Int)]

但是,scala 不喜欢这种语法。我尝试查找 groupBy 的一些示例,但似乎没有什么可以帮助我解决我的用例。有什么想法吗?

最佳答案

根据您的描述,您的计数函数应该采用一个单词而不是单词列表。我会这样定义它:

def countFunction(words: String): List[(String, Int)]

如果您这样做,您应该能够调用 words.groupBy(countFunction),这与以下内容相同:

words.groupBy(word => countFunction(word))

如果您无法更改 countFunction 的签名,那么您应该能够像这样调用 group by:

words.groupBy(word => countFunction(List(word)))

关于Scala 映射和/或 groupby 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13060090/

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