[英]Scala How to match two list to a Map or tuple
val listA = List("one", "two", "three")
val listB = List(1, 3, 4, 9, 2, 6)
Result: 结果:
val m: Map[String, Int] = Map(one -> 1, two -> 2, three -> 3)
I want to pair listA
and listB
to a Map
with corresponding key/value. 我想将listA
和listB
与具有相应键/值的Map
配对。 I have tried to use the zip
method but it only support sequential merging. 我尝试使用zip
方法,但它仅支持顺序合并。 How can I achieve the above result? 如何获得以上结果?
如果f(x)
是可以返回给定字母值的相应数值的函数,则只需将listA
中的每个x
listA
到一个对(x, f(x))
,然后将结果对的列表转换为a使用.toMap
地图。
带有已sorted
listB的zip
:
listA.zip(listB.sorted).toMap
Do you intend: 您打算:
scala> val listA = List("one", "two", "three", "four")
listA: List[String] = List(one, two, three, four)
scala> val listB = List(1, 3, 4, 9, 2, 6)
listB: List[Int] = List(1, 3, 4, 9, 2, 6)
scala> val m = Map("one"->1, "two"->20, "three"->3)
m: scala.collection.immutable.Map[String,Int] = Map(one -> 1, two -> 20, three -> 3)
scala> listA flatMap { case k if (m contains k) && (listB contains m(k)) => Some(k, m(k)) ; case _ => None }
res4: List[(String, Int)] = List((one,1), (three,3))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.