gpt4 book ai didi

scala - 在 Scala 中,给定一个列表列表,如何从元素创建一个嵌套的 HashMap?

转载 作者:行者123 更新时间:2023-12-01 02:00:23 24 4
gpt4 key购买 nike

在 Scala 中,给定一个列表列表,如何从元素创建一个嵌套的 HashMap?我想将 HashMap 创建为分层树,以便对于索引 i 处的元素,索引 i - 1 处的元素是其父元素。

已知长度列表的示例:

val lst = List (
List(34, 56, 78),
List(34, 56,79),
List (87, 23, 12),
List(87, 90, 78),
List(1, 45, 87)
)

scala> lst.groupBy(l => l(0))
.mapValues(l => l.groupBy(x => x(1)))
.mapValues{ case x => x.mapValues(y => y.map (z => z(2))) }
res2: scala.collection.immutable.Map[Int,scala.collection.immutable.Map[Int,List[Int]]] = Map(34 -> Map(56 -> List(78, 79)), 1 -> Map(45 -> List(87)), 87 -> Map(23 -> List(12), 90 -> List(78)))

当元素的长度已知但不适用于任意长度 N 时,此方法有效。是否有任何解决方案可以为每个列表具有相同长度的任何长度的列表创建此嵌套映射?

最佳答案

一些初步测试似乎表明这可能有效。

def nest(lli: List[List[Int]]): Traversable[_] =
if (lli.head.size == 1)
lli.flatten.distinct
else
lli.groupBy(_.head)
.mapValues(vs => nest(vs.map(_.tail)))

关于scala - 在 Scala 中,给定一个列表列表,如何从元素创建一个嵌套的 HashMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37040892/

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