在Scala中反向/转置一对多地图
发布时间:2020-12-16 09:21:41 所属栏目:安全 来源:网络整理
导读:将地图[A,Set [B]]转换成地图[B,Set [A]]的最佳方法是什么? 例如,如何转一个 Map(1 - Set("a","b"),2 - Set("b","c"),3 - Set("c","d")) 进入 Map("a" - Set(1),"b" - Set(1,2),"c" - Set(2,3),"d" - Set(3)) (我正在使用不可变的集合,而我的真正的问题与字
将地图[A,Set [B]]转换成地图[B,Set [A]]的最佳方法是什么?
例如,如何转一个 Map(1 -> Set("a","b"),2 -> Set("b","c"),3 -> Set("c","d")) 进入 Map("a" -> Set(1),"b" -> Set(1,2),"c" -> Set(2,3),"d" -> Set(3)) (我正在使用不可变的集合,而我的真正的问题与字符串或整数无关. 解决方法
在aioobe和Moritz的帮助下:
def reverse[A,B](m: Map[A,Set[B]]) = m.values.toSet.flatten.map(v => (v,m.keys.filter(m(_)(v)))).toMap 如果您明确地调用contains: def reverse[A,m.keys.filter(m(_).contains(v)))).toMap (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |