例如:我有一个地图列表,我想根据地图的第3个“列”的值创建一个列表...
val l = List(Map(1 -> "test", 2 -> "test", 3 -> "test"), Map(4 -> "test", 5 -> "test", 6 -> "test"))
答案 0 :(得分:6)
嗯,地图上没有排序,所以问题的“第三列”部分没有意义。如果您的意思是“返回包含地图键3的值列表”,那么您可以这样做
val l = List(Map(1 -> "test1", 2 -> "test2", 3 -> "test3"), Map(1 -> "test4", 2 -> "test5", 3 -> "test6"))
val thirdArgs= for(map<-l; value <-map.get(3)) yield value
// or equivalently val thirdArgs= l.flatMap(_.get(3))
println(thirdArgs)// prints List(test3, test6)
这取决于map.get(3)返回Option [String]的事实,而Scala for-comprehension语法与Option一起使用。
如果您的确意味着“第三列”,那么您想要的数据结构不是地图,而是元组。
val l = List(("test1","test2","test3"), ("test4","test5", "test6"))
val thirdArgs= for(tuple<-l) yield tuple._3
// or equivalently val thirdArgs= l.map(_._3)
println(thirdArgs)// prints List(test3, test6)
答案 1 :(得分:6)
也许这就是你想要的:
scala> val l = List(Map(1 -> "test1", 2 -> "test2", 3 -> "test3"),
| Map(1 -> "test4", 2 -> "test5", 3 -> "test6"))
>l: List[scala.collection.immutable.Map[Int,java.lang.String]] = List(Map(1 -> test1, 2 -> test2, 3 -> test3), Map(1 -> test4, 2 -> test5, 3 -> test6))
你可以得到第三个“行”:
scala> l.map( numMap => numMap(3))
res1: List[java.lang.String] = List(test3, test6)