我有一個數組,這樣的事情陣列GROUPBY和返回數組索引相關指標的集合,每個這樣的組,即對於一個給定的數組的答案是:Scala集合:</p> <pre><code>val a = Array("a", "c", "c", "z", "c", "b", "a") </code></pre> <p>,我希望得到一個地圖有此數組和值的所有不同值的鍵:每個組
Map(
"a" -> Array(0, 6),
"b" -> Array(5),
"c" -> Array(1, 2, 4),
"z" -> Array(3)
)
出人意料的是,它被證明是稍微複雜一些,我已經預料到的。到目前爲止我所得到的最好的是:
a.zipWithIndex.groupBy {
case(cnt, idx) => cnt
}.map {
case(cnt, arr) => (cnt, arr.map {
case(k, v) => v
}
}
這不是簡明扼要或容易理解。任何更好的想法?
我不認爲第一個1是醜陋的,品味的問題。 – samthebest 2014-09-04 07:52:32
也許稍微不那麼醜陋的單行'a.zipWithIndex.groupBy(_._ 1).mapValues(_。unzip._2)' – 2014-09-04 10:04:23