我在Scala中有一个列表列表,看起来像这样:List(List(1, 5, 6, 10), List(1, 6), List(1, 3, 10)
,我想转换
它进入HashMap[Int, List[Int]]
,其中第一个Int是每个列表的索引,List[Int]
是列表本身。最后HashMap应该
看起来像
HashMap[Int, List[Int]](
0 -> List(1, 5, 6, 10),
1 -> List(1, 6),
2 -> List (1, 3, 10),)
这是我的方法,在列表的长度上有一个列表0
并用这个嵌套列表压缩它,然后以某种方式
将其转换为HashMap。但我正在寻找更惯用或更整洁的东西。有什么想法吗?
答案 0 :(得分:3)
带有zipWithIndex
的{{1}}应该这样做:
map
修改强>
如果你绝对需要一个scala> val a = List(List(1, 5, 6, 10), List(1, 6), List(1, 3, 10))
a: List[List[Int]] = List(List(1, 5, 6, 10), List(1, 6), List(1, 3, 10))
scala> a.zipWithIndex.map(_.swap).toMap
res0: scala.collection.immutable.Map[Int,List[Int]] =
Map(
0 -> List(1, 5, 6, 10),
1 -> List(1, 6),
2 -> List(1, 3, 10)
)
,事情会有点麻烦:
HashMap