在集合 Scala 2.11.12 中的某些位置连接地图
Posted
技术标签:
【中文标题】在集合 Scala 2.11.12 中的某些位置连接地图【英文标题】:Concatenate maps at certain places in set Scala 2.11.12 【发布时间】:2022-01-23 22:28:06 【问题描述】:鉴于此代码:
Set(("rain", Map("none" -> 1), ("wind", Map("normal" -> 1))))
Map("rain" -> Map("slight" -> 0, "none" -> 0), "wind" -> ("normal" -> 0, "strong" -> 0, "weak" -> 0))
我怎样才能得到以下输出:
Set(("rain", Map("none" -> 1, "slight" -> 1), ("wind", Map("normal" -> 1, "strong" -> 0, "weak" -> 0))))
【问题讨论】:
你尝试了什么?什么不起作用?Maps
是自定义类型还是只是 Map
的拼写错误?
(rain, Maps(none -> 1, slight -> 1)
的规则是什么?
@Dylan 这是一个错字。
现在应该可以编译了,我忘了括号@jwvh
【参考方案1】:
所以你有几个非常混乱的集合类型。
你有一个 Set
的元组...
val s: Set[(String,Map[String,Int])] = ...
...还有一张Map
的地图...
val m: Map[String,Map[String,Int]] = ...
...您想使用从Map
收集的相关数据来增强Set
。
不幸的是,您的示例结果留下了许多未回答的问题,例如:如果 Set
包含天气条件(例如:"snow"
)或条件级别(例如:"rain"
-@987654330 @),这在 Map
数据中不存在?
我对它的行为方式做了一些最好的猜测。
val r =
s.map case (weather,level) =>
val keys = level.keySet ++ m.getOrElse(weather, Map()).keySet
weather -> keys.map(k => (k, level.getOrElse(k,0) +
m.get(weather).flatMap(_.get(k)).getOrElse(0))
).toMap
【讨论】:
以上是关于在集合 Scala 2.11.12 中的某些位置连接地图的主要内容,如果未能解决你的问题,请参考以下文章