我有元組的集合:如何用一系列元組構造一個元組?
Seq(("foo", "bar3"), ("foo", "bar1"), ("foo", "bar2"))
我該如何申請,我得到
("foo", Seq("bar1", "bar2", "bar3"))
我不能環繞此我的頭這樣的功能。我對函數式編程不熟悉,所以我正在考慮某種摺疊或聚合。
我有元組的集合:如何用一系列元組構造一個元組?
Seq(("foo", "bar3"), ("foo", "bar1"), ("foo", "bar2"))
我該如何申請,我得到
("foo", Seq("bar1", "bar2", "bar3"))
我不能環繞此我的頭這樣的功能。我對函數式編程不熟悉,所以我正在考慮某種摺疊或聚合。
我想您的解決方案是這樣的:
val seq = Seq(("foo", "bar3"), ("foo", "bar1"), ("foo", "bar2"))
seq.groupBy(_._1)
.mapValues(_.map(_._2))
@AlexandrDorokhin部分我同意你的看法。在代碼中做了小的改進 –
@AlexandrDorokhin 但是它運行良好,即使像Seq((foo,foo1,bar1),(foo,foo1,bar2),...'(用'_._ 2'在自定義映射的最後一行代碼中。 – carpenter
將元組的第一個元素始終具有相同的價值?還是你想收集所有共享第一個元素相同值的第二個元素?第二個元素的次序是重要的?我注意到它不是輸入序列的順序,並且是排序的,但是這是偶然的,還是你想對它進行排序? –
@TheArchetypalPaul順序並不重要。我想收集所有共享第一個元素的相同值的第二個元素。 – carpenter
謝謝。那麼謝爾蓋的回答是一個很好的「聯合國」。 –