Scala Tuples,操纵地图数据

时间:2017-08-10 10:18:49

标签: scala list recursion maps tuples

所以我目前有一个具有如下数据的地图集:

val mymap = Map ("Apple" -> List(1, 4 , 5, 7, 9, 8, 0), "Orange" -> List(5, 7, 2, 1, 8, 4, 3))

数据表示每个用户拥有其中一个的次数。我想编写一个可以显示密钥的函数,然后拉一个值即尾部。我没有取得多大成功,并且听说元组列表很难操作?对这个有任何帮助吗?

def mapTail(list: String): Iterable[(String, List[Int])] = { val tailValue: Iterable[(String, List[Int])] = { mymap.groupBy(_._2).values.map(_.tail) } println(String) tailValue }

我现在拥有的是什么。

Ps - 不确定如何将代码格式化为使用Stack Overflow的新代码,因此如果有人可以对其进行格式化,那么我就不会感到满意。

2 个答案:

答案 0 :(得分:0)

也许我错过了一些东西,但是如果你想要每个密钥的tail

mymap.map { case (key, value) => (key, value.tail) }

res2: scala.collection.immutable.Map[String,List[Int]] = 
  Map(Apple -> List(4, 5, 7, 9, 8, 0), Orange -> List(7, 2, 1, 8, 4, 3))

答案 1 :(得分:0)

或者这个:

def printKeysAndTail(map: Map[String, List[Int]]): Unit = mymap.foldLeft(Iterable.empty[(String, List[Int])])((o,n) => Iterable((n._1, n._2.tail)) ++ o).foreach(println)

内部部分正是您在原始代码中所期望的类型:

mymap.foldLeft(Iterable.empty[(String, List[Int])])((o,n) => Iterable((n._1, n._2.tail)) ++ o)