Scala:映射中的选项元组列表



我有一个可以None的值列表

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

我怎样才能将其转换为地图,例如:

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

跳过空元素?

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

错误: 无法证明选项[(字符串, 整数(] <:<(T, U(。

我在想这样的事情:

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

但显然我错过了一些:(

试试这个:

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

您可以在列表中执行.flatten以仅获取非 None 元素,执行.toMap

list  // : List[Option[(String,Int)]]
  .flatten // : List[(String,Int)]
  .toMap //: Map[String, Int]

最新更新