我有一个值列表,可能是None
val list = List(("apples",1), ("oranges",3), ("avocado",4), None, ("pears",10))
我如何将其转换为类似地图:
Map("apples"->1, "oranges"->3, "avocado"->4, "pears"->10)
跳过空元素?
我无法使用toMap
到list
因为它给了我错误:
错误:无法证明Option [(String,Int)]<:< (T,U)。
我在考虑这样的事情:
val m = list.map(x => x match{case Some(x) => x._1->x._2
case None => None})
但显然我遗漏了一些东西:(
答案 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}}