Предположим, у меня есть отображение следующим образом:

[ (1,List[11,12,13]),(2,List[21,22,23]),(3,List[31,32,33]) ]

Я хочу преобразовать / преобразовать это в форму, показанную ниже:

[ (1,11),(1,12),(1,13),(2,21),(2,22),(2,23),(3,31),(3,32),(3,33)]

Я использую scala 2.10.4

1
Prateek 25 Фев 2016 в 15:28

4 ответа

Лучший ответ

Решение, использующее для понимания:

val input = List((1,List(11,12,13)),(2,List(21,22,23)),(3,List(31,32,33)))

val output = for {
  tuple <- input
  element <- tuple._2
} yield (tuple._1, element)
3
hasumedic 25 Фев 2016 в 12:38

Используйте flatMap:

 val xs = Array( (1,List(11,12,13)),(2,List(21,22,23)),(3,List(31,32,33)) )
 xs.flatMap{ case (s, xs) => xs.map((s,_))}
7
vitalii 25 Фев 2016 в 12:35

Можешь попробовать:

array.flatMap { case (key, arr) => arr.map { key -> _ } }
6
cchantep 25 Фев 2016 в 12:35

Может, вам понравится:

for {
   (k,arr) <- arrOfTuple
   el <- arr
 } yield (k -> el)
2
Alexandr Dorokhin 25 Фев 2016 в 12:55