Scala:地图中的选项元组列表

时间:2017-04-08 15:10:32

标签: scala

我有一个值列表,可能是None

val list = List(("apples",1), ("oranges",3), ("avocado",4), None, ("pears",10))

我如何将其转换为类似地图:

Map("apples"->1, "oranges"->3, "avocado"->4, "pears"->10)

跳过空元素?

我无法使用toMaplist因为它给了我错误:

  

错误:无法证明Option [(String,Int)]<:< (T,U)。

我在考虑这样的事情:

val m = list.map(x => x match{case Some(x) => x._1->x._2 
case None => None})

但显然我遗漏了一些东西:(

2 个答案:

答案 0 :(得分:2)

试试这个:

list.collect{case (k,v) => (k,v)}.toMap

答案 1 :(得分:1)

您可以在列表中执行.toMap以仅获取非空元素,执行list // : List[Option[(String,Int)]] .flatten // : List[(String,Int)] .toMap //: Map[String, Int]

{{1}}
相关问题