gpt4 book ai didi

scala - 将列表映射拆分为映射列表的功能方法

转载 作者:行者123 更新时间:2023-12-04 16:33:19 24 4
gpt4 key购买 nike

我有点困在这个问题上。我觉得我在“向后思考”,这让我有点困惑。

我有一个 Map[Long, Seq[String]]我想将其转换为 Seq[Map[Long, String]] .走向另一个方向相当简单,因为我们可以将元素组合在一起,但是,我不确定如何以功能方式将其分开。

所以,

val x = Map(1 -> List("a","b","c"), 2 -> List("d", "e"), 3 -> List("f"))

应该成为
List(Map(1 -> "a", 2 -> "d", 3 -> "f"), Map(1 -> "b", 2 -> "e"), Map(1 -> "c"))

我正在考虑使用 x.partition然后在每个结果元组上递归,但我不确定我会在什么上分区:/

我正在用 Scala 写作,但欢迎任何功能性答案(与语言无关)。

最佳答案

在 haskell :

> import qualified Data.Map as M
> import Data.List
> m = M.fromList [(1,["a","b","c"]), (2,["d","e"]), (3,["f"])]
> map M.fromList . transpose . map (\(i,xs) -> map ((,) i) xs) . M.toList $ m
[fromList [(1,"a"),(2,"d"),(3,"f")],fromList [(1,"b"),(2,"e")],fromList [(1,"c")]]
M.toListM.fromList将映射转换为关联对列表,然后返回。
map ((,) i) xs[(i,x) | x<-xs] 相同, 添加 (i,...)到每个元素。
transpose交换列表列表中的“行”和“列”,类似于矩阵转置。

关于scala - 将列表映射拆分为映射列表的功能方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46610791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com