gpt4 book ai didi

Scala groupBy+ map 问题

转载 作者:行者123 更新时间:2023-12-01 12:12:33 25 4
gpt4 key购买 nike

此处为实例:Scastie Example

我不明白这是怎么回事。我有一个像这样的元组序列:

val v = Seq(
("provider@test.com",2),
("consumer@test.com",2),
("provider@test.com",9),
("provider@test.com",10)
)

我想像这样对它们进行分组:

v.groupBy{ case(email, id) => id }

这导致:

Map(
2 -> List(
(provider@test.com,2),
(consumer@test.com,2)
),
10 -> List(
(provider@test.com,10)
),
9 -> List(
(provider@test.com,9)
)
)

这很有道理,但现在如果我像这样再次映射它们:

v.groupBy{ case(email, id) => id}.map{case(id, data) => data.head}.toSeq

我希望结果是:

Vector((provider@test.com,2), (provider@test.com,10), (provider@test.com,9))

但是我得到:

Vector((provider@test.com,9))

怎么了?

最佳答案

这确实有点令人费解。发生这种情况是因为 Map[K, V] 上的 map 也返回一个 Map[K', V'] 对,并且因为您的 key 是都一样(邮寄地址),您只会返回一个值。

这可以通过使用 .values 来避免,它返回 Map 中值的 Iterable,然后是 .map:

v
.groupBy { case (_, id) => id }
.values
.map(_.head)
.toList

关于Scala groupBy+ map 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50700624/

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