我有一个从外部系统以以下形式导入的字符串的有序数组:
val l = List("key1", "val1", "key2", "val2", etc...)
将其转换为地图的scala方法是什么,在那里我可以遍历键并获取关联的val?
谢谢
我的答案与丹尼尔(Daniel)的相似,但我会使用collect
而不是map
:
l.grouped(2).collect { case List(k, v) => k -> v }.toMap
如果您的列表具有不匹配的键,则不会抛出异常:
scala> val l = List("key1", "val1", "key2", "val2", "key3")
l: List[String] = List(key1, val1, key2, val2, key3)
scala> l.grouped(2).collect { case List(k, v) => k -> v }.toMap
res22: scala.collection.immutable.Map[String,String] = Map(key1 -> val1, key2 -> val2)
scala> l.grouped(2).map { case List(k, v) => k -> v }.toMap
scala.MatchError: List(key3) (of class scala.collection.immutable.$colon$colon)
在某些情况下,grouped
返回a List[List[String]]
,其中每个内部列表都有两个元素:
scala> l.grouped(2).toList // the toList is to force the iterator to evaluate.
res26: List[List[String]] = List(List(key1, val1), List(key2, val2))
然后与collect
您匹配内部列表并创建一个元组,最后toMap
将列表转换为Map
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句