ich die folgende Variablereduzieren, um eine Liste der Karte von Tupeln
val x1 = List((List(('a',1), ('e',1), ('t',1)),"eat"), (List(('a',1), ('e',1), ('t',1)),"ate"))
ich ein
List(Map -> List)
wollen bekommen haben, die etwa wie folgt aussehen wird. Die Idee ist, zu einer Gruppe Wörter b die Zeichen in ihnen enthaltenen
Map(List((a,1), (e,1), (t,1)) -> List(eat, ate))
ich verwendet habe, die im Anschluss an diese ganz jedoch zu erreichen, nicht alles richtig machen. Ich habe den folgenden Code ein und erhalten Sie das erwartete Ergebnis
scala> val z1 = x1.groupBy(x => x._1)
.map(x => Map(x._1 -> x._2.map(z=>z._2)))
.fold(){(a,b) => b}
z1: Any = Map(List((a,1), (e,1), (t,1)) -> List(eat, ate))
jedoch verwendet wird, würde Ich mag die offensichtliche Art Map[List[(Char, Int)],List[String]]
und nicht Any
zurückzukehren, wie in meinem Fall zurückgeführt wird. Ich frage mich auch, ob es besser ist, die ganze Sache selbst zu machen. Danke vielmals!
Danke! Lief wie am Schnürchen! Über diese Datenrepräsentation wird 'List [(List [(Char, Int)], String)] aus einem Wörterbuch verschiedener Wörter berechnet. – borarak
Sie könnten die folgende Kanonisierung verwenden: 'val words = Liste (" essen "," gegessen "," billig "," Pfirsich "," Baum ") words.map (w => (w.toLowerCase.sorted .., w)) groupBy (_._ 1) .mapValues (_ Karte (_._ 2)) ' Dies ergibt: ' Karte (AET -> Liste (essen, aß), acehp -> Liste (billig, Pfirsich), eert -> List (Baum)) – Iadams