我有一個型別的地圖,Map[String, List[(String, Set[String]])]
例如:Map(ABC -> List((ABC, Set(X)))
我需要將其更新為Map[String, Set[String]]
輸出 :Map(ABC -> Set(X))
主要需要List[String]從值中移除部分。
uj5u.com熱心網友回復:
例如你可以做.mapValues
val m: Map[String, List[(String, Set[String])]] =
Map("ABC" -> List(("ABC", Set("X"))))
// taking the set from the head of list, ignoring second "ABC"
val m1: Map[String, Set[String]] = m.view.mapValues(_.head._2).toMap
// Map(ABC -> Set(X))
// combining into union the sets from the whole list, ignoring second "ABC"
val m2: Map[String, Set[String]] =
m.view.mapValues(_.map(_._2).fold(Set())(_ union _)).toMap
// Map(ABC -> Set(X))
// ignoring first "ABC"
val m3: Map[String, Set[String]] = m.values.flatten.toMap
// Map(ABC -> Set(X))
(m3由@Philluminati提供)
https://www.scala-lang.org/api/current/scala/collection/immutable/Map.html
https://docs.scala-lang.org/overviews/collections-2.13/maps.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524180.html
標籤:斯卡拉字典收藏品
上一篇:將函式應用于Scala中的串列
