0
私は、キーが文字列であり、値がその文字列がリストに何回出現するかの数であるマップを作成したいと考えています。私はgroupByメソッドを試しましたが、失敗しました。Scala groupByリスト
私は、キーが文字列であり、値がその文字列がリストに何回出現するかの数であるマップを作成したいと考えています。私はgroupByメソッドを試しましたが、失敗しました。Scala groupByリスト
必要な回答
scala> val l = List("abc","abc","cbe","cab")
l: List[String] = List(abc, abc, cbe, cab)
scala> l.groupBy(identity).mapValues(_.size)
res91: scala.collection.immutable.Map[String,Int] = Map(cab -> 1, abc -> 2, cbe -> 1)
はあなたが
scala> def generateMap(list: List[String], map:Map[String, Int]) : Map[String, Int] = list match {
| case x :: y => if(map.keySet.contains(x)) generateMap(y, map ++ Map(x -> (map(x)+1))) else generateMap(y, map ++ Map(x -> 1))
| case Nil => map
| }
generateMap: (list: List[String], map: Map[String,Int])Map[String,Int]
関数を書くことができます
scala> val list = List("abc", "abc", "bc", "b", "abc") list: List[String] = List(abc, abc, bc, b, abc)
としてあなたが次に関数を呼び出すリストを持っていると仮定しますとして scala> generateMap(list, Map.empty)
res1: Map[String,Int] = Map(abc -> 3, bc -> 1, b -> 1)
マップを表示できますか?そしてあなたの望む出力は何ですか? –
私のリストは[abc、abc、cbe、cab]です。これを試しましたが、うまくいきません。 val c = b.groupBy(identity).mapValues(_。size)マップをこのように見たい(abc-> 2、cbe-> 1、cab-> 1) –
地図を表示する"b"の内容 –