假设我有两个列表:
List(("a",1),("b",4),("d",5),("a",7),("b",6))
并且
List("a","b","c","d")
我希望能够根据第一个列表将它们分组,以便得到:
List("a" -> List(("a",1),("a",7)), "b" -> List(("b",4),("b",6)), "d" -> List(("d",5)))
什么是实现这一点的最佳方法?我知道我可以使用groupBy和针对预定值进行模式匹配,但当第二个列表不是预定的时,我有些困惑。
编辑:
我需要第二个列表中对象的副本作为处理列表的键。我可能需要按第二个列表中对象的一个参数进行分组,但仍然保留整个对象作为键...如果这有意义的话。
List(("a",1),("b",4),("d",5),("a",7),("b",6))
List(("a",1,1),("b",2,3),("c",5,6),("d",6,7))
成为:
List(("a",1,1) -> List(("a",1),("a",7)), ("b",2,3) -> List(("b",4),("b",6)), ("d",6,7) -> List(("d",5)))
对于表达不清楚,我很抱歉!
toList.sortBy{_._1._1}
,但我会继续自私地假设他不需要保留顺序,直到明确说明为止 :) - Kaito