Zählen Sie die Vorkommen jedes Elements in einer Liste [Liste [T]] in Scala
Angenommen, Sie haben
val docs = List(List("one", "two"), List("two", "three"))
wo z.B. Liste ("eins", "zwei") stellt ein Dokument dar, das die Begriffe "eins" und "zwei" enthält, und Sie möchten für jeden Begriff eine Karte mit der Häufigkeit des Dokuments erstellen, d. H. In diesem Fall
Map("one" -> 1, "two" -> 2, "three" -> 1)
Wie würdest du das in Scala machen? (Und auf effiziente Weise unter der Annahme eines viel größeren Datensatzes.)
Mein erster Java-ähnlicher Gedanke ist, eine veränderbare Karte zu verwenden:
val freqs = mutable.Map.empty[String,Int]
for (doc <- docs)
for (term <- doc)
freqs(term) = freqs.getOrElse(term, 0) + 1
was funktioniert gut genug, aber ich frage mich, wie man das "funktionaler" machen kann, ohne auf eine veränderbare Karte zurückzugreifen?