我想做的就是转换以下内容:
List(2, 4, 6, 8, 10)
至Map(0 -> 2, 1 -> 4, 2 -> 6, 3 -> 8, 4 -> 10 )
。换句话说,将索引映射到值。它应该很容易,但我遗漏了一些东西。
有人能建议一种简单的方法吗?
UPD:只是为了推广解决方案。假设我需要执行额外的值转换。例如,用List(_)
包装它。在我们的案例中:
List(2, 4, 6, 8, 10)
- > Map(0 -> List(2), 1 -> List(4), 2 -> List(6), 3 -> List(8), 4 -> List(10))
答案 0 :(得分:16)
List(2, 4, 6, 8, 10).zipWithIndex.map(_.swap).toMap
答案 1 :(得分:14)
val xs = List(2, 4, 6, 8, 10)
(xs.indices zip xs).toMap
// Map(0 -> 2, 1 -> 4, 2 -> 6, 3 -> 8, 4 -> 10)
答案 2 :(得分:5)
UPD:如果您想要转化价值,您可以使用已发布的解决方案之一,然后使用地图mapValues
或您可以预先应用转换:
List(2, 4, 6, 8, 10).zipWithIndex.map { case (v, i) => i -> List(v) }.toMap
res0: Map[Int,List[Int]] = Map(0 -> List(2), 1 -> List(4), 2 -> List(6), 3 -> List(8), 4 -> L
ist(10))