相关疑难解决方法(0)

计算元素的出现次数

计算列表中的所有元素是Haskell中的一个单行:

count xs = toList (fromListWith (+) [(x, 1) | x <- xs])
Run Code Online (Sandbox Code Playgroud)

以下是一个示例用法:

*Main> count "haskell scala"
[(' ',1),('a',3),('c',1),('e',1),('h',1),('k',1),('l',3),('s',2)]
Run Code Online (Sandbox Code Playgroud)

这个函数在Scala中也可以如此优雅地表达吗?

dictionary haskell scala list-comprehension list

22
推荐指数
2
解决办法
1万
查看次数

Predef.identity在scala中做了什么?

这里有文档Predef,但没有关于身份的文字.这个功能用于什么?它的作用是什么?

scala

16
推荐指数
2
解决办法
9428
查看次数

计算Scala中List [List [T]]中每个元素的出现次数

假设你有

val docs = List(List("one", "two"), List("two", "three"))
Run Code Online (Sandbox Code Playgroud)

例如List("one","two")表示包含术语"one"和"two"的文档,并且您希望为每个术语构建一个包含文档频率的地图,即在这种情况下

Map("one" -> 1, "two" -> 2, "three" -> 1)
Run Code Online (Sandbox Code Playgroud)

你会如何在Scala中做到这一点?(并且以有效的方式,假设一个更大的数据集.)

我的第一个类似Java的想法是使用一个可变映射:

val freqs = mutable.Map.empty[String,Int]
for (doc <- docs)
  for (term <- doc)
    freqs(term) = freqs.getOrElse(term, 0) + 1
Run Code Online (Sandbox Code Playgroud)

它运作得很好,但我想知道如何以更"功能"的方式做到这一点,而不是诉诸一个可变的地图?

scala scala-collections

9
推荐指数
2
解决办法
6868
查看次数

getmap的hash方法不返回null

这一行:var counter : Integer = jm.get(ls)在下面的代码中,当它应为null时,返回值为0的Integer.这是为什么会发生的?

根据文档,如果找不到元素,则HashMap的get方法返回null.下面的代码是计算列表中元素的数量

import scala.collection.JavaConversions._

object Tester {

  def main(args: Array[String]) {


    var listOfLinks : java.util.Set[String] = new java.util.TreeSet[String]
    listOfLinks.add("1")
    listOfLinks.add("1")
    listOfLinks.add("1")
    listOfLinks.add("2")
    listOfLinks.add("3")
    listOfLinks.add("3")
    listOfLinks.add("3")
    listOfLinks.add("3")

    var l: java.util.List[String] = new java.util.ArrayList[String]
    var jm: java.util.Map[String, Int] = new java.util.HashMap[String, Int];

    for (ls <- listOfLinks) {
      var counter : Integer = jm.get(ls)
      if (counter == null) {
        jm.put(ls, 1)
      } else {
        counter = counter + 1
        jm.put(ls, counter)
      }
    }

    for(jmv <- jm){ …
Run Code Online (Sandbox Code Playgroud)

scala

7
推荐指数
1
解决办法
331
查看次数

为每个List元素创建一个包含#of外观的Map

我是Scala的新手.

如果我有以下内容List:

val ls = List("a", "a", "a", "b", "b", "c")
Run Code Online (Sandbox Code Playgroud)

如何创建一个Map包含列表中每个元素的多个外观?

例如,Map上面的列表应该是:

Map("a" -> 3, "b" -> 2, "c" -> 1)
Run Code Online (Sandbox Code Playgroud)

collections scala

2
推荐指数
1
解决办法
160
查看次数

Scala对:如何计算值中出现的次数(数字列表)

我有一个RDD [(Int,ListBuffer [Byte])],我喜欢对列表中的每个数字执行“字数统计”。例如,RDD为:

(31000,ListBuffer(1, 1, 0, 1, 0, 1, 1, 1, 1))
(21010,ListBuffer(0, 0, 0))
(23000,ListBuffer(1, 1, 1, 1, 1))
(01000,ListBuffer(1, 1))
(34000,ListBuffer(0))
Run Code Online (Sandbox Code Playgroud)

我想得到这个:

(31000,(0,2),(1,7)) // this could be a Map[0=>2, 1=>7]
(21010,(0,3))
(23000,(1,5))
(01000,(1,2))
(34000,(0,3))
Run Code Online (Sandbox Code Playgroud)

有指导吗?先感谢您

编辑:有人建议重复我的问题,但建议的帖子只涉及一个列表,但我想申请一个结对(整数,列表)。

scala apache-spark

-3
推荐指数
1
解决办法
98
查看次数