Scala元组,处理地图数据

Scala元组,处理地图数据,scala,list,recursion,maps,tuples,Scala,List,Recursion,Maps,Tuples,因此,我目前有一个地图集,其数据如下: val mymap=Map(“苹果”->List(1,4,5,7,9,8,0),“橙色”->List(5,7,2,1,8,4,3)) 数据表示每个用户使用其中一个的次数。我想写一个函数,可以显示关键点,然后拉一个值,即尾巴。我没有太大的成功,听说元组列表很难操作?这个有什么帮助吗 defmaptail(list:String):Iterable[(String,list[Int])]={val tailValue:Iterable[(String,lis

因此,我目前有一个地图集,其数据如下:

val mymap=Map(“苹果”->List(1,4,5,7,9,8,0),“橙色”->List(5,7,2,1,8,4,3))
数据表示每个用户使用其中一个的次数。我想写一个函数,可以显示关键点,然后拉一个值,即尾巴。我没有太大的成功,听说元组列表很难操作?这个有什么帮助吗

defmaptail(list:String):Iterable[(String,list[Int])]={val tailValue:Iterable[(String,list[Int])]={mymap.groupBy(u._2).values.map(u.tail)}println(String)tailValue}
这就是我现在拥有的


Ps-不知道如何将代码格式化为使用堆栈溢出的新代码,因此如果有人能将其格式化,我将不胜感激。

您可以简单地执行以下操作

mymap.map(x => x._2.map(y => (x._1, y))).foreach(println)
您应该将输出设置为

List((Apple,1), (Apple,4), (Apple,5), (Apple,7), (Apple,9), (Apple,8), (Apple,0))
List((Orange,5), (Orange,7), (Orange,2), (Orange,1), (Orange,8), (Orange,4), (Orange,3))

您可以简单地执行以下操作

mymap.map(x => x._2.map(y => (x._1, y))).foreach(println)
您应该将输出设置为

List((Apple,1), (Apple,4), (Apple,5), (Apple,7), (Apple,9), (Apple,8), (Apple,0))
List((Orange,5), (Orange,7), (Orange,2), (Orange,1), (Orange,8), (Orange,4), (Orange,3))

也许我遗漏了什么,但是如果您想从每个键获得
尾部

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))

也许我遗漏了什么,但是如果您想从每个键获得
尾部

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))
或者这个:

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)
或者这个:

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)

我不确定这是您正在寻找的,但是:将映射转换为键和原始值的尾部:mymap.map{case(k,v)=>(k,v.tail)}显示您迄今为止尝试过的内容。def mapTail(list:String):Iterable[(String,list[Int])]={val tailValue:Iterable[(String,list[Int])={mymap.groupBy(._2).values.map tail}println(String)tailValue}这个呢?def printKeysAndTail(map:map[String,List[Int]]:Unit=mymap.foldLeft(Iterable.empty[(String,List[Int]))((o,n)=>Iterable((n..(u 1,n.)n.(u 2.tail))++o)foreach(println)我不确定这是您正在寻找的,但是:将映射转换为键和原始值的尾部:mymap.map{case(k,v)=>(k,v.tail)}显示您迄今为止尝试过的内容。def mapTail(list:String):Iterable[(String,list[Int])]={val tailValue:Iterable[(String,list[Int])]={mymap.groupBy(._2).values.map(.tail)}println(String)tailValue}这是怎么回事?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)