我想遍历list[List[String]]
以将其子集成list[String]
,然后将列表中的每个列表存储在val
中。 val的名称可以是任何名称,但应在名称中包含每个列表索引。
例如:
val x: List[ List[String]] = List(List("Nike","Apple"), List("James", "Mike"))
所需的输出:
group_0 : List[String] = List(Nike, Apple)
group_1 = List[String] = List(James, Mike)
答案 0 :(得分:0)
使用zipWithIndex
并转换为Map[String, List[String]]
。每个key
的格式为group_0
,group_1
等
val map = x.zipWithIndex.map(x => s"group_${x._2}" -> x._1).toMap
使用键
访问每个列表map("group_0")
scala> x.zipWithIndex.map(x => s"group_${x._2}" -> x._1).toMap
res4: scala.collection.immutable.Map[String,List[String]] = Map(group_0 -> List(Nike, Apple), group_1 -> List(James, Mike))
scala> res4("group_0")
res6: List[String] = List(Nike, Apple)
scala> res4("group_1")
res7: List[String] = List(James, Mike)
@Manoj Kumar Dhakd建议使用toMap
更好
答案 1 :(得分:0)
在列表中使用函数zipWithIndex
和zip索引,然后使用map
并创建Map
val listMap=x.zipWithIndex.map(grp=>"group_"+grp._2.toString->grp._1).toMap
如下所示显示您的输出
listMap.foreach(x=>println(x._1+"="+x._2))
//output:
group_0=List(Nike, Apple)
group_1=List(James, Mike)
答案 2 :(得分:0)
x.zipWithIndex.foreach{case (x,y)=>println("group_"+y+": List[String] = "+x)}
然后,在Scala REPL中:
scala> val x: List[ List[String]] = List(List("Nike","Apple"), List("James", "Mike"))
x: List[List[String]] = List(List(Nike, Apple), List(James, Mike))
scala> x.zipWithIndex.foreach{case (x,y)=>println("group_"+y+": List[String] = "+x)}
group_0: List[String] = List(Nike, Apple)
group_1: List[String] = List(James, Mike)