我有一个可以None
的值列表
val list = List(("apples",1), ("oranges",3), ("avocado",4), None, ("pears",10))
我怎样才能将其转换为地图,例如:
Map("apples"->1, "oranges"->3, "avocado"->4, "pears"->10)
跳过空元素?
我无法使用toMap
来list
,因为它给了我错误:
错误: 无法证明选项[(字符串, 整数(] <:<(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]