2016-10-09 2 views
0

에 [INT, 지능]을지도하려면 다음변환 목록 [지도 [문자열,지도 [문자열, 지능은]]] 감안할 때 스칼라

Map(1->21,2->22,3->23,4->24) 

:

val t: List[Map[String, Map[String, Int]]] = List(
    Map("a" -> Map("m" -> 1, "l" -> 21)), 
    Map("a" -> Map("m" -> 2, "l" -> 22)), 
    Map("a" -> Map("m" -> 3, "l" -> 23)), 
    Map("a" -> Map("m" -> 4, "l" -> 24)) 
) 

가 나는 결과를 원한다 내가 지금까지 가지고있는 것은 :

그러나 이것은 입력 검사를하지 않으므로 내가 이해할 수없는 이유가 무엇인지 이해하지 못한다.

내 질문은 :

  1. 왜 내 코드에 결함이?
  2. 내가 원하는 변환을하는 데 가장 관용적 인 방법은 무엇일까요?

답변

2

List[Map[...]]이 있는데 Map[...]이 아니므로 먼저 압축을 풀어야합니다.

val tt = (for { 
    map <- t 
    (k, v) <- map 
} ...) 
0
t 
    .iterator 
    .flatMap(_.values) 
    .map { v => v("m") -> v("l") } 
    .toMap