gpt4 book ai didi

Scala 的排序问题

转载 作者:行者123 更新时间:2023-12-04 05:51:19 26 4
gpt4 key购买 nike

关于scala,我还在学习期间,面临一些我想解决的问题。

我目前拥有的是项目类型 X 的序列。现在我想创建一个函数,该函数返回一个数字映射,该映射与出现在原始序列上一定时间的项目集映射。

这是我想做的小例子:

val exampleSeq[X]: Seq = [a, b, d, d, c, b, d]
val exampleSeq2[x]: Seq = [a, a, a, c, c, b, b, c]

myMagicalFunction(exampleSeq) returns Map[1 -> Set[a, c], 2 -> Set[b], 3 -> Set[d]]

myMagicalFunction(exampleSeq2) returns Map[2 -> Set[b], 3 -> Set[a, c]]

到目前为止,我已经能够创建一个函数来映射项目及其出现的时间:

function[X](seq: Seq[X]) = seq.groupBy(item => item).mapValues(_.size)

从那个例子返回我的 exampleSeq 是

Map(a -> 1, b -> 2, c -> 1, d -> 3) 

谢谢你的回答:)

最佳答案

一种方法,对于

val a = Seq('a', 'b', 'd', 'd', 'c', 'b', 'd')

这个

val b = for ( (k,v) <- a.groupBy(identity).mapValues(_.size).toArray ) 
yield (v,k)

交付

Array((2,b), (3,d), (1,a), (1,c))

等等

b.groupBy(_._1).mapValues(_.map(_._2).toSet)
res: Map(2 -> Set(b), 1 -> Set(a, c), 3 -> Set(d))

注意 seq.groupBy(item => item) 等同于 seq.groupBy(identity)

关于Scala 的排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29790443/

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